Blender V4.3
AdvancedFunctions0D.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2009-2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
10#include "AdvancedFunctions0D.h"
11#include "Canvas.h"
12
15
17
19{
20 Canvas *canvas = Canvas::getInstance();
21 int bound = _filter.getBound();
22
23 if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > canvas->width()) ||
24 (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > canvas->height()))
25 {
26 result = 0.0;
27 return 0;
28 }
29
31 canvas->readColorPixels(int(iter->getProjectedX()) - bound,
32 int(iter->getProjectedY()) - bound,
33 _filter.maskSize(),
34 _filter.maskSize(),
35 image);
36 result = _filter.getSmoothedPixel<RGBImage>(
37 &image, int(iter->getProjectedX()), int(iter->getProjectedY()));
38
39 return 0;
40}
41
43{
44 Canvas *iViewer = Canvas::getInstance();
45 int bound = _filter.getBound();
46
47 if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > iViewer->width()) ||
48 (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > iViewer->height()))
49 {
50 result = 0.0;
51 return 0;
52 }
53
55 iViewer->readDepthPixels(int(iter->getProjectedX()) - bound,
56 int(iter->getProjectedY()) - bound,
57 _filter.maskSize(),
58 _filter.maskSize(),
59 image);
60 result = _filter.getSmoothedPixel(
61 &image, int(iter->getProjectedX()), int(iter->getProjectedY()));
62
63 return 0;
64}
65
67{
68 Canvas *canvas = Canvas::getInstance();
69 result = canvas->readMapPixel(
70 _mapName, _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
71 return 0;
72}
73
75{
77 result = svm->readSteerableViewMapPixel(
78 _orientation, _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
79 return 0;
80}
81
83{
85 result = svm->readCompleteViewMapPixel(
86 _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
87 return 0;
88}
89
91{
93 float pxy = svm->readCompleteViewMapPixel(
94 _level, int(iter->getProjectedX()), int(iter->getProjectedY()));
95 float gx = svm->readCompleteViewMapPixel(
96 _level, int(iter->getProjectedX()) + _step, int(iter->getProjectedY())) -
97 pxy;
98 float gy = svm->readCompleteViewMapPixel(
99 _level, int(iter->getProjectedX()), int(iter->getProjectedY()) + _step) -
100 pxy;
101 result = Vec2f(gx, gy).norm();
102 return 0;
103}
104
105} // namespace Freestyle::Functions0D
Functions taking 0D input.
Class to define a canvas designed to draw style modules.
Functions taking 0D input.
Convenient access to the steerable ViewMap to which any element of the ViewMap belongs to.
virtual void readDepthPixels(int x, int y, int w, int h, GrayImage &oImage) const =0
float readMapPixel(const char *iMapName, int level, int x, int y)
Definition Canvas.cpp:452
virtual void readColorPixels(int x, int y, int w, int h, RGBImage &oImage) const =0
virtual int height() const =0
virtual int width() const =0
static Canvas * getInstance()
Definition Canvas.h:57
SteerableViewMap * getSteerableViewMap()
Definition Canvas.h:165
int operator()(Interface0DIterator &iter)
int operator()(Interface0DIterator &iter)
float getSmoothedPixel(Map *map, int x, int y)
virtual real getProjectedX() const
virtual real getProjectedY() const
float readCompleteViewMapPixel(int iLevel, int x, int y)
float readSteerableViewMapPixel(uint iOrientation, int iLevel, int x, int y)
value_type norm() const
Definition VecMat.h:94
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
VecMat::Vec2< float > Vec2f
Definition Geom.h:22