Blender  V3.3
AdvancedFunctions0D.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
8 #include "AdvancedFunctions0D.h"
9 #include "Canvas.h"
10 
11 #include "../view_map/Functions0D.h"
12 #include "../view_map/SteerableViewMap.h"
13 
15 
17 {
18  Canvas *canvas = Canvas::getInstance();
19  int bound = _filter.getBound();
20 
21  if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > canvas->width()) ||
22  (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > canvas->height())) {
23  result = 0.0;
24  return 0;
25  }
26 
28  canvas->readColorPixels((int)iter->getProjectedX() - bound,
29  (int)iter->getProjectedY() - bound,
30  _filter.maskSize(),
31  _filter.maskSize(),
32  image);
33  result = _filter.getSmoothedPixel<RGBImage>(
34  &image, (int)iter->getProjectedX(), (int)iter->getProjectedY());
35 
36  return 0;
37 }
38 
40 {
41  Canvas *iViewer = Canvas::getInstance();
42  int bound = _filter.getBound();
43 
44  if ((iter->getProjectedX() - bound < 0) || (iter->getProjectedX() + bound > iViewer->width()) ||
45  (iter->getProjectedY() - bound < 0) || (iter->getProjectedY() + bound > iViewer->height())) {
46  result = 0.0;
47  return 0;
48  }
49 
51  iViewer->readDepthPixels((int)iter->getProjectedX() - bound,
52  (int)iter->getProjectedY() - bound,
53  _filter.maskSize(),
54  _filter.maskSize(),
55  image);
56  result = _filter.getSmoothedPixel(
57  &image, (int)iter->getProjectedX(), (int)iter->getProjectedY());
58 
59  return 0;
60 }
61 
63 {
64  Canvas *canvas = Canvas::getInstance();
65  result = canvas->readMapPixel(
66  _mapName, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY());
67  return 0;
68 }
69 
71 {
74  _orientation, _level, (int)iter->getProjectedX(), (int)iter->getProjectedY());
75  return 0;
76 }
77 
79 {
82  _level, (int)iter->getProjectedX(), (int)iter->getProjectedY());
83  return 0;
84 }
85 
87 {
89  float pxy = svm->readCompleteViewMapPixel(
90  _level, (int)iter->getProjectedX(), (int)iter->getProjectedY());
91  float gx = svm->readCompleteViewMapPixel(
92  _level, (int)iter->getProjectedX() + _step, (int)iter->getProjectedY()) -
93  pxy;
94  float gy = svm->readCompleteViewMapPixel(
95  _level, (int)iter->getProjectedX(), (int)iter->getProjectedY() + _step) -
96  pxy;
97  result = Vec2f(gx, gy).norm();
98  return 0;
99 }
100 
101 } // namespace Freestyle::Functions0D
Functions taking 0D input.
Class to define a canvas designed to draw style modules.
SteerableViewMap * getSteerableViewMap()
Definition: Canvas.h:163
virtual void readDepthPixels(int x, int y, int w, int h, GrayImage &oImage) const =0
static Canvas * getInstance()
Definition: Canvas.h:55
float readMapPixel(const char *iMapName, int level, int x, int y)
Definition: Canvas.cpp:447
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
int operator()(Interface0DIterator &iter)
int operator()(Interface0DIterator &iter)
float getSmoothedPixel(Map *map, int x, int y)
virtual real getProjectedX() const
Definition: Interface0D.cpp:41
virtual real getProjectedY() const
Definition: Interface0D.cpp:47
float readSteerableViewMapPixel(unsigned iOrientation, int iLevel, int x, int y)
float readCompleteViewMapPixel(int iLevel, int x, int y)
value_type norm() const
Definition: VecMat.h:95
depth_tx normal_tx diffuse_light_tx specular_light_tx volume_light_tx environment_tx ambient_occlusion_tx aov_value_tx in_weight_img image(1, GPU_R32F, Qualifier::WRITE, ImageType::FLOAT_2D_ARRAY, "out_weight_img") .image(3
VecMat::Vec2< float > Vec2f
Definition: Geom.h:20