Blender  V2.93
nodes.h
Go to the documentation of this file.
1 /*
2  * Copyright 2011-2013 Blender Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef __NODES_H__
18 #define __NODES_H__
19 
20 #include "graph/node.h"
21 #include "render/graph.h"
22 #include "render/image.h"
23 
24 #include "util/util_array.h"
25 #include "util/util_string.h"
26 
28 
29 class ImageManager;
30 class LightManager;
31 class Scene;
32 class Shader;
33 
34 /* Texture Mapping */
35 
37  public:
40  bool skip();
41  void compile(SVMCompiler &compiler, int offset_in, int offset_out);
42  int compile(SVMCompiler &compiler, ShaderInput *vector_in);
43  void compile(OSLCompiler &compiler);
44 
45  int compile_begin(SVMCompiler &compiler, ShaderInput *vector_in);
46  void compile_end(SVMCompiler &compiler, ShaderInput *vector_in, int vector_offset);
47 
51 
53  bool use_minmax;
54 
55  enum Type { POINT = 0, TEXTURE = 1, VECTOR = 2, NORMAL = 3 };
57 
58  enum Mapping { NONE = 0, X = 1, Y = 2, Z = 3 };
60 
63 };
64 
65 /* Nodes */
66 
67 class TextureNode : public ShaderNode {
68  public:
69  explicit TextureNode(const NodeType *node_type) : ShaderNode(node_type)
70  {
71  }
84 };
85 
86 /* Any node which uses image manager's slot should be a subclass of this one. */
88  public:
89  explicit ImageSlotTextureNode(const NodeType *node_type) : TextureNode(node_type)
90  {
92  }
93 
94  virtual bool equals(const ShaderNode &other)
95  {
96  const ImageSlotTextureNode &other_node = (const ImageSlotTextureNode &)other;
97  return TextureNode::equals(other) && handle == other_node.handle;
98  }
99 
101 };
102 
104  public:
109  {
110  return true;
111  }
112 
113  virtual bool equals(const ShaderNode &other)
114  {
115  const ImageTextureNode &other_node = (const ImageTextureNode &)other;
116  return ImageSlotTextureNode::equals(other) && animated == other_node.animated;
117  }
118 
119  ImageParams image_params() const;
120 
121  /* Parameters. */
122  NODE_SOCKET_API(ustring, filename)
123  NODE_SOCKET_API(ustring, colorspace)
124  NODE_SOCKET_API(ImageAlphaType, alpha_type)
126  NODE_SOCKET_API(InterpolationType, interpolation)
127  NODE_SOCKET_API(ExtensionType, extension)
128  NODE_SOCKET_API(float, projection_blend)
129  NODE_SOCKET_API(bool, animated)
132 
133  protected:
135 };
136 
138  public:
143  {
144  return true;
145  }
146  virtual int get_group()
147  {
148  return NODE_GROUP_LEVEL_2;
149  }
150 
151  virtual bool equals(const ShaderNode &other)
152  {
153  const EnvironmentTextureNode &other_node = (const EnvironmentTextureNode &)other;
154  return ImageSlotTextureNode::equals(other) && animated == other_node.animated;
155  }
156 
157  ImageParams image_params() const;
158 
159  /* Parameters. */
160  NODE_SOCKET_API(ustring, filename)
161  NODE_SOCKET_API(ustring, colorspace)
162  NODE_SOCKET_API(ImageAlphaType, alpha_type)
164  NODE_SOCKET_API(InterpolationType, interpolation)
165  NODE_SOCKET_API(bool, animated)
167 };
168 
169 class SkyTextureNode : public TextureNode {
170  public:
172 
173  virtual int get_group()
174  {
175  return NODE_GROUP_LEVEL_2;
176  }
177 
178  NODE_SOCKET_API(NodeSkyType, sky_type)
179  NODE_SOCKET_API(float3, sun_direction)
180  NODE_SOCKET_API(float, turbidity)
181  NODE_SOCKET_API(float, ground_albedo)
182  NODE_SOCKET_API(bool, sun_disc)
183  NODE_SOCKET_API(float, sun_size)
184  NODE_SOCKET_API(float, sun_intensity)
185  NODE_SOCKET_API(float, sun_elevation)
186  NODE_SOCKET_API(float, sun_rotation)
187  NODE_SOCKET_API(float, altitude)
188  NODE_SOCKET_API(float, air_density)
189  NODE_SOCKET_API(float, dust_density)
190  NODE_SOCKET_API(float, ozone_density)
193 
194  float get_sun_size()
195  {
196  /* Clamping for numerical precision. */
197  return fmaxf(sun_size, 0.0005f);
198  }
199 };
200 
201 class OutputNode : public ShaderNode {
202  public:
204 
206  NODE_SOCKET_API(Node *, volume)
207  NODE_SOCKET_API(float3, displacement)
209 
210  /* Don't allow output node de-duplication. */
211  virtual bool equals(const ShaderNode & /*other*/)
212  {
213  return false;
214  }
215 };
216 
217 class OutputAOVNode : public ShaderNode {
218  public:
220  virtual void simplify_settings(Scene *scene);
221 
222  NODE_SOCKET_API(float, value)
223  NODE_SOCKET_API(float3, color)
224 
225  NODE_SOCKET_API(ustring, name)
226 
227  virtual int get_group()
228  {
229  return NODE_GROUP_LEVEL_4;
230  }
231 
232  /* Don't allow output node de-duplication. */
233  virtual bool equals(const ShaderNode & /*other*/)
234  {
235  return false;
236  }
237 
238  int slot;
239  bool is_color;
240 };
241 
243  public:
245 
246  virtual int get_group()
247  {
248  return NODE_GROUP_LEVEL_2;
249  }
250 
251  NODE_SOCKET_API(NodeGradientType, gradient_type)
253 };
254 
256  public:
258 
259  NODE_SOCKET_API(int, dimensions)
260  NODE_SOCKET_API(float, w)
261  NODE_SOCKET_API(float, scale)
262  NODE_SOCKET_API(float, detail)
263  NODE_SOCKET_API(float, roughness)
264  NODE_SOCKET_API(float, distortion)
266 };
267 
269  public:
271 
272  virtual int get_group()
273  {
274  return NODE_GROUP_LEVEL_2;
275  }
276 
277  virtual int get_feature()
278  {
280  if (dimensions == 4) {
282  }
283  else if (dimensions >= 2 && feature == NODE_VORONOI_SMOOTH_F1) {
285  }
286  return result;
287  }
288 
289  NODE_SOCKET_API(int, dimensions)
292  NODE_SOCKET_API(float, w)
293  NODE_SOCKET_API(float, scale)
294  NODE_SOCKET_API(float, exponent)
295  NODE_SOCKET_API(float, smoothness)
296  NODE_SOCKET_API(float, randomness)
298 };
299 
301  public:
303 
304  virtual int get_group()
305  {
306  return NODE_GROUP_LEVEL_2;
307  }
308 
309  NODE_SOCKET_API(int, dimensions)
310  NODE_SOCKET_API(NodeMusgraveType, musgrave_type)
311  NODE_SOCKET_API(float, w)
312  NODE_SOCKET_API(float, scale)
313  NODE_SOCKET_API(float, detail)
314  NODE_SOCKET_API(float, dimension)
315  NODE_SOCKET_API(float, lacunarity)
316  NODE_SOCKET_API(float, offset)
317  NODE_SOCKET_API(float, gain)
319 };
320 
321 class WaveTextureNode : public TextureNode {
322  public:
324 
325  virtual int get_group()
326  {
327  return NODE_GROUP_LEVEL_2;
328  }
329 
330  NODE_SOCKET_API(NodeWaveType, wave_type)
331  NODE_SOCKET_API(NodeWaveBandsDirection, bands_direction)
332  NODE_SOCKET_API(NodeWaveRingsDirection, rings_direction)
334 
335  NODE_SOCKET_API(float, scale)
336  NODE_SOCKET_API(float, distortion)
337  NODE_SOCKET_API(float, detail)
338  NODE_SOCKET_API(float, detail_scale)
339  NODE_SOCKET_API(float, detail_roughness)
340  NODE_SOCKET_API(float, phase)
342 };
343 
345  public:
347 
348  virtual int get_group()
349  {
350  return NODE_GROUP_LEVEL_2;
351  }
352 
353  NODE_SOCKET_API(int, depth)
355  NODE_SOCKET_API(float, scale)
356  NODE_SOCKET_API(float, distortion)
357 };
358 
360  public:
362 
364  NODE_SOCKET_API(float3, color1)
365  NODE_SOCKET_API(float3, color2)
366  NODE_SOCKET_API(float, scale)
367 
368  virtual int get_group()
369  {
370  return NODE_GROUP_LEVEL_2;
371  }
372 };
373 
375  public:
377 
378  NODE_SOCKET_API(float, offset)
379  NODE_SOCKET_API(float, squash)
380  NODE_SOCKET_API(int, offset_frequency)
381  NODE_SOCKET_API(int, squash_frequency)
382 
383  NODE_SOCKET_API(float3, color1)
384  NODE_SOCKET_API(float3, color2)
385  NODE_SOCKET_API(float3, mortar)
386  NODE_SOCKET_API(float, scale)
387  NODE_SOCKET_API(float, mortar_size)
388  NODE_SOCKET_API(float, mortar_smooth)
389  NODE_SOCKET_API(float, bias)
390  NODE_SOCKET_API(float, brick_width)
391  NODE_SOCKET_API(float, row_height)
393 
394  virtual int get_group()
395  {
396  return NODE_GROUP_LEVEL_2;
397  }
398 };
399 
401  public:
403  virtual int get_group()
404  {
405  return NODE_GROUP_LEVEL_4;
406  }
407 
412  {
413  return true;
414  }
415 
417  {
418  return true;
419  }
420 
421  /* Parameters. */
422  NODE_SOCKET_API(ustring, filename)
424  NODE_SOCKET_API(InterpolationType, interpolation)
427 
428  /* Runtime. */
430 
431  ImageParams image_params() const;
432 
433  virtual bool equals(const ShaderNode &other)
434  {
435  const PointDensityTextureNode &other_node = (const PointDensityTextureNode &)other;
436  return ShaderNode::equals(other) && handle == other_node.handle;
437  }
438 };
439 
440 class IESLightNode : public TextureNode {
441  public:
443 
444  ~IESLightNode();
446  virtual int get_group()
447  {
448  return NODE_GROUP_LEVEL_2;
449  }
450 
451  NODE_SOCKET_API(ustring, filename)
452  NODE_SOCKET_API(ustring, ies)
453 
454  NODE_SOCKET_API(float, strength)
456 
457  private:
458  LightManager *light_manager;
459  int slot;
460 
461  void get_slot();
462 };
463 
465  public:
467  virtual int get_group()
468  {
469  return NODE_GROUP_LEVEL_2;
470  }
471 
472  NODE_SOCKET_API(int, dimensions)
474  NODE_SOCKET_API(float, w)
475 };
476 
477 class MappingNode : public ShaderNode {
478  public:
480  virtual int get_group()
481  {
482  return NODE_GROUP_LEVEL_2;
483  }
484  void constant_fold(const ConstantFolder &folder);
485 
487  NODE_SOCKET_API(float3, location)
488  NODE_SOCKET_API(float3, rotation)
489  NODE_SOCKET_API(float3, scale)
490  NODE_SOCKET_API(NodeMappingType, mapping_type)
491 };
492 
493 class RGBToBWNode : public ShaderNode {
494  public:
496  void constant_fold(const ConstantFolder &folder);
497 
498  NODE_SOCKET_API(float3, color)
499 };
500 
501 class ConvertNode : public ShaderNode {
502  public:
503  ConvertNode(SocketType::Type from, SocketType::Type to, bool autoconvert = false);
504  ConvertNode(const ConvertNode &other);
506 
507  void constant_fold(const ConstantFolder &folder);
508 
509  private:
511 
512  union {
513  float value_float;
519  };
520  ustring value_string;
521 
522  static const int MAX_TYPE = 12;
523  static bool register_types();
524  static Node *create(const NodeType *type);
525  static const NodeType *node_types[MAX_TYPE][MAX_TYPE];
526  static bool initialized;
527 };
528 
529 class BsdfBaseNode : public ShaderNode {
530  public:
531  BsdfBaseNode(const NodeType *node_type);
532 
534  {
535  return true;
536  }
538  {
539  return closure;
540  }
541  virtual bool has_bump();
542 
543  virtual bool equals(const ShaderNode & /*other*/)
544  {
545  /* TODO(sergey): With some care BSDF nodes can be de-duplicated. */
546  return false;
547  }
548 
549  protected:
551 };
552 
553 class BsdfNode : public BsdfBaseNode {
554  public:
555  explicit BsdfNode(const NodeType *node_type);
557 
558  void compile(SVMCompiler &compiler,
559  ShaderInput *param1,
560  ShaderInput *param2,
561  ShaderInput *param3 = NULL,
562  ShaderInput *param4 = NULL);
563 
564  NODE_SOCKET_API(float3, color)
566  NODE_SOCKET_API(float, surface_mix_weight)
567 };
568 
570  public:
572 
573  NODE_SOCKET_API(float3, tangent)
574  NODE_SOCKET_API(float, roughness)
575  NODE_SOCKET_API(float, anisotropy)
576  NODE_SOCKET_API(float, rotation)
577  NODE_SOCKET_API(ClosureType, distribution)
578 
580  {
581  return distribution;
582  }
585  {
586  return true;
587  }
588 };
589 
590 class DiffuseBsdfNode : public BsdfNode {
591  public:
593 
594  NODE_SOCKET_API(float, roughness)
595 };
596 
597 /* Disney principled BRDF */
599  public:
601 
602  void expand(ShaderGraph *graph);
603  bool has_surface_bssrdf();
604  bool has_bssrdf_bump();
605  void compile(SVMCompiler &compiler,
607  ShaderInput *subsurface,
608  ShaderInput *subsurface_radius,
609  ShaderInput *specular,
611  ShaderInput *specular_tint,
612  ShaderInput *anisotropic,
613  ShaderInput *sheen,
614  ShaderInput *sheen_tint,
615  ShaderInput *clearcoat,
616  ShaderInput *clearcoat_roughness,
617  ShaderInput *ior,
618  ShaderInput *transmission,
619  ShaderInput *anisotropic_rotation,
620  ShaderInput *transmission_roughness);
621 
622  NODE_SOCKET_API(float3, base_color)
623  NODE_SOCKET_API(float3, subsurface_color)
624  NODE_SOCKET_API(float3, subsurface_radius)
625  NODE_SOCKET_API(float, metallic)
626  NODE_SOCKET_API(float, subsurface)
627  NODE_SOCKET_API(float, specular)
628  NODE_SOCKET_API(float, roughness)
629  NODE_SOCKET_API(float, specular_tint)
630  NODE_SOCKET_API(float, anisotropic)
631  NODE_SOCKET_API(float, sheen)
632  NODE_SOCKET_API(float, sheen_tint)
633  NODE_SOCKET_API(float, clearcoat)
634  NODE_SOCKET_API(float, clearcoat_roughness)
635  NODE_SOCKET_API(float, ior)
636  NODE_SOCKET_API(float, transmission)
637  NODE_SOCKET_API(float, anisotropic_rotation)
638  NODE_SOCKET_API(float, transmission_roughness)
640  NODE_SOCKET_API(float3, clearcoat_normal)
641  NODE_SOCKET_API(float3, tangent)
642  NODE_SOCKET_API(float, surface_mix_weight)
643  NODE_SOCKET_API(ClosureType, distribution)
644  NODE_SOCKET_API(ClosureType, subsurface_method)
645  NODE_SOCKET_API(float3, emission)
646  NODE_SOCKET_API(float, emission_strength)
647  NODE_SOCKET_API(float, alpha)
648 
649  private:
650  ClosureType distribution_orig;
651 
652  public:
656  {
657  return true;
658  }
659 };
660 
662  public:
664 };
665 
667  public:
669 
671  {
672  return true;
673  }
674 };
675 
676 class VelvetBsdfNode : public BsdfNode {
677  public:
679 
680  NODE_SOCKET_API(float, sigma)
681 };
682 
683 class GlossyBsdfNode : public BsdfNode {
684  public:
686 
690  {
691  return distribution;
692  }
693 
694  NODE_SOCKET_API(float, roughness)
695  NODE_SOCKET_API(ClosureType, distribution)
696 
697  private:
698  float roughness_orig;
699  ClosureType distribution_orig;
700 };
701 
702 class GlassBsdfNode : public BsdfNode {
703  public:
705 
709  {
710  return distribution;
711  }
712 
713  NODE_SOCKET_API(float, roughness)
714  NODE_SOCKET_API(float, IOR)
715  NODE_SOCKET_API(ClosureType, distribution)
716 
717  private:
718  float roughness_orig;
719  ClosureType distribution_orig;
720 };
721 
722 class RefractionBsdfNode : public BsdfNode {
723  public:
725 
729  {
730  return distribution;
731  }
732 
733  NODE_SOCKET_API(float, roughness)
734  NODE_SOCKET_API(float, IOR)
735  NODE_SOCKET_API(ClosureType, distribution)
736 
737  private:
738  float roughness_orig;
739  ClosureType distribution_orig;
740 };
741 
742 class ToonBsdfNode : public BsdfNode {
743  public:
745 
746  NODE_SOCKET_API(float, smooth)
747  NODE_SOCKET_API(float, size)
749 };
750 
752  public:
755  {
756  return true;
757  }
758  bool has_bssrdf_bump();
760  {
761  return falloff;
762  }
763 
764  NODE_SOCKET_API(float, scale)
765  NODE_SOCKET_API(float3, radius)
766  NODE_SOCKET_API(float, sharpness)
767  NODE_SOCKET_API(float, texture_blur)
768  NODE_SOCKET_API(ClosureType, falloff)
769 };
770 
771 class EmissionNode : public ShaderNode {
772  public:
774  void constant_fold(const ConstantFolder &folder);
775 
777  {
778  return true;
779  }
781  {
782  return true;
783  }
784 
785  NODE_SOCKET_API(float3, color)
786  NODE_SOCKET_API(float, strength)
787  NODE_SOCKET_API(float, surface_mix_weight)
788 };
789 
790 class BackgroundNode : public ShaderNode {
791  public:
793  void constant_fold(const ConstantFolder &folder);
794 
795  NODE_SOCKET_API(float3, color)
796  NODE_SOCKET_API(float, strength)
797  NODE_SOCKET_API(float, surface_mix_weight)
798 };
799 
800 class HoldoutNode : public ShaderNode {
801  public:
803  virtual int get_group()
804  {
805  return NODE_GROUP_LEVEL_1;
806  }
808  {
809  return CLOSURE_HOLDOUT_ID;
810  }
811 
812  NODE_SOCKET_API(float, surface_mix_weight)
813  NODE_SOCKET_API(float, volume_mix_weight)
814 };
815 
817  public:
819 
821  {
822  return true;
823  }
824  virtual int get_group()
825  {
826  return NODE_GROUP_LEVEL_3;
827  }
828  virtual bool has_raytrace()
829  {
830  return true;
831  }
832 
833  NODE_SOCKET_API(float3, color)
834  NODE_SOCKET_API(float, distance)
836  NODE_SOCKET_API(int, samples)
837 
838  NODE_SOCKET_API(bool, only_local)
839  NODE_SOCKET_API(bool, inside)
840 };
841 
842 class VolumeNode : public ShaderNode {
843  public:
844  VolumeNode(const NodeType *node_type);
846 
847  void compile(SVMCompiler &compiler, ShaderInput *param1, ShaderInput *param2);
848  virtual int get_group()
849  {
850  return NODE_GROUP_LEVEL_1;
851  }
852  virtual int get_feature()
853  {
855  }
857  {
858  return closure;
859  }
860  virtual bool has_volume_support()
861  {
862  return true;
863  }
864 
865  NODE_SOCKET_API(float3, color)
866  NODE_SOCKET_API(float, density)
867  NODE_SOCKET_API(float, volume_mix_weight)
868 
869  protected:
871 
872  public:
873  virtual bool equals(const ShaderNode & /*other*/)
874  {
875  /* TODO(sergey): With some care Volume nodes can be de-duplicated. */
876  return false;
877  }
878 };
879 
881  public:
883 };
884 
886  public:
888 
889  NODE_SOCKET_API(float, anisotropy)
890 };
891 
893  public:
897  {
898  return true;
899  }
900 
901  NODE_SOCKET_API(ustring, density_attribute)
902  NODE_SOCKET_API(ustring, color_attribute)
903  NODE_SOCKET_API(ustring, temperature_attribute)
904 
905  NODE_SOCKET_API(float, anisotropy)
906  NODE_SOCKET_API(float3, absorption_color)
907  NODE_SOCKET_API(float, emission_strength)
908  NODE_SOCKET_API(float3, emission_color)
909  NODE_SOCKET_API(float, blackbody_intensity)
910  NODE_SOCKET_API(float3, blackbody_tint)
911  NODE_SOCKET_API(float, temperature)
912 };
913 
914 /* Interface between the I/O sockets and the SVM/OSL backend. */
916  public:
919 
920  /* Longitudinal roughness. */
921  NODE_SOCKET_API(float, roughness)
922  /* Azimuthal roughness. */
923  NODE_SOCKET_API(float, radial_roughness)
924  /* Randomization factor for roughnesses. */
925  NODE_SOCKET_API(float, random_roughness)
926  /* Longitudinal roughness factor for only the diffuse bounce (shiny undercoat). */
927  NODE_SOCKET_API(float, coat)
928  /* Index of reflection. */
929  NODE_SOCKET_API(float, ior)
930  /* Cuticle tilt angle. */
931  NODE_SOCKET_API(float, offset)
932  /* Direct coloring's color. */
933  NODE_SOCKET_API(float3, color)
934  /* Melanin concentration. */
935  NODE_SOCKET_API(float, melanin)
936  /* Melanin redness ratio. */
937  NODE_SOCKET_API(float, melanin_redness)
938  /* Dye color. */
939  NODE_SOCKET_API(float3, tint)
940  /* Randomization factor for melanin quantities. */
941  NODE_SOCKET_API(float, random_color)
942  /* Absorption coefficient (unfiltered). */
943  NODE_SOCKET_API(float3, absorption_coefficient)
944 
946  NODE_SOCKET_API(float, surface_mix_weight)
947  /* If linked, here will be the given random number. */
948  NODE_SOCKET_API(float, random)
949  /* Selected coloring parametrization. */
951 };
952 
953 class HairBsdfNode : public BsdfNode {
954  public:
957  {
958  return component;
959  }
960 
962  NODE_SOCKET_API(float, offset)
963  NODE_SOCKET_API(float, roughness_u)
964  NODE_SOCKET_API(float, roughness_v)
965  NODE_SOCKET_API(float3, tangent)
966 };
967 
968 class GeometryNode : public ShaderNode {
969  public:
973  {
974  return true;
975  }
977  {
978  return true;
979  }
980  int get_group();
981 
982  NODE_SOCKET_API(float3, normal_osl)
983 };
984 
986  public:
990  {
991  return true;
992  }
994  {
995  return true;
996  }
997 
998  NODE_SOCKET_API(float3, normal_osl)
999  NODE_SOCKET_API(bool, from_dupli)
1000  NODE_SOCKET_API(bool, use_transform)
1001  NODE_SOCKET_API(Transform, ob_tfm)
1002 };
1003 
1004 class UVMapNode : public ShaderNode {
1005  public:
1009  {
1010  return true;
1011  }
1013  {
1014  return true;
1015  }
1016  virtual int get_group()
1017  {
1018  return NODE_GROUP_LEVEL_1;
1019  }
1020 
1021  NODE_SOCKET_API(ustring, attribute)
1022  NODE_SOCKET_API(bool, from_dupli)
1023 };
1024 
1025 class LightPathNode : public ShaderNode {
1026  public:
1028  virtual int get_group()
1029  {
1030  return NODE_GROUP_LEVEL_1;
1031  }
1032 };
1033 
1035  public:
1038  {
1039  return true;
1040  }
1041  virtual int get_group()
1042  {
1043  return NODE_GROUP_LEVEL_2;
1044  }
1045 
1046  NODE_SOCKET_API(float, strength)
1047  NODE_SOCKET_API(float, smooth)
1048 };
1049 
1050 class ObjectInfoNode : public ShaderNode {
1051  public:
1053  virtual int get_group()
1054  {
1055  return NODE_GROUP_LEVEL_1;
1056  }
1057 };
1058 
1060  public:
1064  {
1065  return true;
1066  }
1067  virtual int get_group()
1068  {
1069  return NODE_GROUP_LEVEL_1;
1070  }
1071 };
1072 
1073 class HairInfoNode : public ShaderNode {
1074  public:
1076 
1079  {
1080  return true;
1081  }
1083  {
1084  return true;
1085  }
1086  virtual int get_group()
1087  {
1088  return NODE_GROUP_LEVEL_1;
1089  }
1090  virtual int get_feature()
1091  {
1093  }
1094 };
1095 
1096 class VolumeInfoNode : public ShaderNode {
1097  public:
1101  {
1102  return true;
1103  }
1105  {
1106  return true;
1107  }
1108  void expand(ShaderGraph *graph);
1109 };
1110 
1111 class VertexColorNode : public ShaderNode {
1112  public:
1116  {
1117  return true;
1118  }
1120  {
1121  return true;
1122  }
1123 
1124  NODE_SOCKET_API(ustring, layer_name)
1125 };
1126 
1127 class ValueNode : public ShaderNode {
1128  public:
1130 
1131  void constant_fold(const ConstantFolder &folder);
1132 
1133  NODE_SOCKET_API(float, value)
1134 };
1135 
1136 class ColorNode : public ShaderNode {
1137  public:
1139 
1140  void constant_fold(const ConstantFolder &folder);
1141 
1142  NODE_SOCKET_API(float3, value)
1143 };
1144 
1145 class AddClosureNode : public ShaderNode {
1146  public:
1148  void constant_fold(const ConstantFolder &folder);
1149 };
1150 
1151 class MixClosureNode : public ShaderNode {
1152  public:
1154  void constant_fold(const ConstantFolder &folder);
1155 
1156  NODE_SOCKET_API(float, fac)
1157 };
1158 
1160  public:
1162 
1163  NODE_SOCKET_API(float, weight)
1164  NODE_SOCKET_API(float, fac)
1165 };
1166 
1167 class InvertNode : public ShaderNode {
1168  public:
1170  void constant_fold(const ConstantFolder &folder);
1171  virtual int get_group()
1172  {
1173  return NODE_GROUP_LEVEL_3;
1174  }
1175 
1176  NODE_SOCKET_API(float, fac)
1177  NODE_SOCKET_API(float3, color)
1178 };
1179 
1180 class MixNode : public ShaderNode {
1181  public:
1183  void constant_fold(const ConstantFolder &folder);
1184 
1185  virtual int get_group()
1186  {
1187  return NODE_GROUP_LEVEL_3;
1188  }
1189 
1190  NODE_SOCKET_API(NodeMix, mix_type)
1191  NODE_SOCKET_API(bool, use_clamp)
1192  NODE_SOCKET_API(float3, color1)
1193  NODE_SOCKET_API(float3, color2)
1194  NODE_SOCKET_API(float, fac)
1195 };
1196 
1197 class CombineRGBNode : public ShaderNode {
1198  public:
1200  void constant_fold(const ConstantFolder &folder);
1201  virtual int get_group()
1202  {
1203  return NODE_GROUP_LEVEL_3;
1204  }
1205 
1206  NODE_SOCKET_API(float, r)
1207  NODE_SOCKET_API(float, g)
1208  NODE_SOCKET_API(float, b)
1209 };
1210 
1211 class CombineHSVNode : public ShaderNode {
1212  public:
1214  void constant_fold(const ConstantFolder &folder);
1215  virtual int get_group()
1216  {
1217  return NODE_GROUP_LEVEL_3;
1218  }
1219 
1220  NODE_SOCKET_API(float, h)
1221  NODE_SOCKET_API(float, s)
1222  NODE_SOCKET_API(float, v)
1223 };
1224 
1225 class CombineXYZNode : public ShaderNode {
1226  public:
1228  void constant_fold(const ConstantFolder &folder);
1229  virtual int get_group()
1230  {
1231  return NODE_GROUP_LEVEL_3;
1232  }
1233 
1234  NODE_SOCKET_API(float, x)
1235  NODE_SOCKET_API(float, y)
1236  NODE_SOCKET_API(float, z)
1237 };
1238 
1239 class GammaNode : public ShaderNode {
1240  public:
1242  void constant_fold(const ConstantFolder &folder);
1243  virtual int get_group()
1244  {
1245  return NODE_GROUP_LEVEL_1;
1246  }
1247 
1248  NODE_SOCKET_API(float3, color)
1249  NODE_SOCKET_API(float, gamma)
1250 };
1251 
1253  public:
1255  void constant_fold(const ConstantFolder &folder);
1256  virtual int get_group()
1257  {
1258  return NODE_GROUP_LEVEL_1;
1259  }
1260 
1261  NODE_SOCKET_API(float3, color)
1262  NODE_SOCKET_API(float, bright)
1263  NODE_SOCKET_API(float, contrast)
1264 };
1265 
1266 class SeparateRGBNode : public ShaderNode {
1267  public:
1269  void constant_fold(const ConstantFolder &folder);
1270  virtual int get_group()
1271  {
1272  return NODE_GROUP_LEVEL_3;
1273  }
1274 
1275  NODE_SOCKET_API(float3, color)
1276 };
1277 
1278 class SeparateHSVNode : public ShaderNode {
1279  public:
1281  void constant_fold(const ConstantFolder &folder);
1282  virtual int get_group()
1283  {
1284  return NODE_GROUP_LEVEL_3;
1285  }
1286 
1287  NODE_SOCKET_API(float3, color)
1288 };
1289 
1290 class SeparateXYZNode : public ShaderNode {
1291  public:
1293  void constant_fold(const ConstantFolder &folder);
1294  virtual int get_group()
1295  {
1296  return NODE_GROUP_LEVEL_3;
1297  }
1298 
1300 };
1301 
1302 class HSVNode : public ShaderNode {
1303  public:
1305 
1306  NODE_SOCKET_API(float, hue)
1307  NODE_SOCKET_API(float, saturation)
1308  NODE_SOCKET_API(float, value)
1309  NODE_SOCKET_API(float, fac)
1310  NODE_SOCKET_API(float3, color)
1311 };
1312 
1313 class AttributeNode : public ShaderNode {
1314  public:
1318  {
1319  return true;
1320  }
1322  {
1323  return true;
1324  }
1325 
1326  NODE_SOCKET_API(ustring, attribute)
1327 };
1328 
1329 class CameraNode : public ShaderNode {
1330  public:
1333  {
1334  return true;
1335  }
1336  virtual int get_group()
1337  {
1338  return NODE_GROUP_LEVEL_2;
1339  }
1340 };
1341 
1342 class FresnelNode : public ShaderNode {
1343  public:
1346  {
1347  return true;
1348  }
1349  virtual int get_group()
1350  {
1351  return NODE_GROUP_LEVEL_1;
1352  }
1353 
1355  NODE_SOCKET_API(float, IOR)
1356 };
1357 
1358 class LayerWeightNode : public ShaderNode {
1359  public:
1362  {
1363  return true;
1364  }
1365  virtual int get_group()
1366  {
1367  return NODE_GROUP_LEVEL_1;
1368  }
1369 
1371  NODE_SOCKET_API(float, blend)
1372 };
1373 
1374 class WireframeNode : public ShaderNode {
1375  public:
1378  {
1379  return true;
1380  }
1381  virtual int get_group()
1382  {
1383  return NODE_GROUP_LEVEL_3;
1384  }
1385 
1386  NODE_SOCKET_API(float, size)
1387  NODE_SOCKET_API(bool, use_pixel_size)
1388 };
1389 
1390 class WavelengthNode : public ShaderNode {
1391  public:
1393  virtual int get_group()
1394  {
1395  return NODE_GROUP_LEVEL_3;
1396  }
1397 
1398  NODE_SOCKET_API(float, wavelength)
1399 };
1400 
1401 class BlackbodyNode : public ShaderNode {
1402  public:
1404  void constant_fold(const ConstantFolder &folder);
1405  virtual int get_group()
1406  {
1407  return NODE_GROUP_LEVEL_3;
1408  }
1409 
1410  NODE_SOCKET_API(float, temperature)
1411 };
1412 
1413 class MapRangeNode : public ShaderNode {
1414  public:
1416  virtual int get_group()
1417  {
1418  return NODE_GROUP_LEVEL_3;
1419  }
1420  void expand(ShaderGraph *graph);
1421 
1422  NODE_SOCKET_API(float, value)
1423  NODE_SOCKET_API(float, from_min)
1424  NODE_SOCKET_API(float, from_max)
1425  NODE_SOCKET_API(float, to_min)
1426  NODE_SOCKET_API(float, to_max)
1427  NODE_SOCKET_API(float, steps)
1428  NODE_SOCKET_API(NodeMapRangeType, range_type)
1429  NODE_SOCKET_API(bool, clamp)
1430 };
1431 
1432 class ClampNode : public ShaderNode {
1433  public:
1435  void constant_fold(const ConstantFolder &folder);
1436  virtual int get_group()
1437  {
1438  return NODE_GROUP_LEVEL_3;
1439  }
1440  NODE_SOCKET_API(float, value)
1441  NODE_SOCKET_API(float, min)
1442  NODE_SOCKET_API(float, max)
1443  NODE_SOCKET_API(NodeClampType, clamp_type)
1444 };
1445 
1446 class MathNode : public ShaderNode {
1447  public:
1449  virtual int get_group()
1450  {
1451  return NODE_GROUP_LEVEL_1;
1452  }
1453  void expand(ShaderGraph *graph);
1454  void constant_fold(const ConstantFolder &folder);
1455 
1456  NODE_SOCKET_API(float, value1)
1457  NODE_SOCKET_API(float, value2)
1458  NODE_SOCKET_API(float, value3)
1459  NODE_SOCKET_API(NodeMathType, math_type)
1460  NODE_SOCKET_API(bool, use_clamp)
1461 };
1462 
1463 class NormalNode : public ShaderNode {
1464  public:
1466  virtual int get_group()
1467  {
1468  return NODE_GROUP_LEVEL_2;
1469  }
1470 
1471  NODE_SOCKET_API(float3, direction)
1473 };
1474 
1475 class VectorMathNode : public ShaderNode {
1476  public:
1478  virtual int get_group()
1479  {
1480  return NODE_GROUP_LEVEL_1;
1481  }
1482  void constant_fold(const ConstantFolder &folder);
1483 
1484  NODE_SOCKET_API(float3, vector1)
1485  NODE_SOCKET_API(float3, vector2)
1487  NODE_SOCKET_API(float, scale)
1489 };
1490 
1492  public:
1494 
1495  virtual int get_group()
1496  {
1497  return NODE_GROUP_LEVEL_3;
1498  }
1500  NODE_SOCKET_API(bool, invert)
1503  NODE_SOCKET_API(float3, axis)
1504  NODE_SOCKET_API(float, angle)
1505  NODE_SOCKET_API(float3, rotation)
1506 };
1507 
1509  public:
1511 
1512  virtual int get_group()
1513  {
1514  return NODE_GROUP_LEVEL_3;
1515  }
1516 
1517  NODE_SOCKET_API(NodeVectorTransformType, transform_type)
1521 };
1522 
1523 class BumpNode : public ShaderNode {
1524  public:
1526  void constant_fold(const ConstantFolder &folder);
1528  {
1529  return true;
1530  }
1531  virtual int get_feature()
1532  {
1533  return NODE_FEATURE_BUMP;
1534  }
1535 
1536  NODE_SOCKET_API(bool, invert)
1537  NODE_SOCKET_API(bool, use_object_space)
1538  NODE_SOCKET_API(float, height)
1539  NODE_SOCKET_API(float, sample_center)
1540  NODE_SOCKET_API(float, sample_x)
1541  NODE_SOCKET_API(float, sample_y)
1543  NODE_SOCKET_API(float, strength)
1544  NODE_SOCKET_API(float, distance)
1545 };
1546 
1547 class CurvesNode : public ShaderNode {
1548  public:
1549  explicit CurvesNode(const NodeType *node_type);
1551 
1552  virtual int get_group()
1553  {
1554  return NODE_GROUP_LEVEL_3;
1555  }
1556 
1558  NODE_SOCKET_API(float, min_x)
1559  NODE_SOCKET_API(float, max_x)
1560  NODE_SOCKET_API(float, fac)
1561  NODE_SOCKET_API(float3, value)
1562 
1563  protected:
1565  void constant_fold(const ConstantFolder &folder, ShaderInput *value_in);
1566  void compile(SVMCompiler &compiler, int type, ShaderInput *value_in, ShaderOutput *value_out);
1567  void compile(OSLCompiler &compiler, const char *name);
1568 };
1569 
1570 class RGBCurvesNode : public CurvesNode {
1571  public:
1573  void constant_fold(const ConstantFolder &folder);
1574 };
1575 
1577  public:
1579  void constant_fold(const ConstantFolder &folder);
1580 };
1581 
1582 class RGBRampNode : public ShaderNode {
1583  public:
1585  void constant_fold(const ConstantFolder &folder);
1586  virtual int get_group()
1587  {
1588  return NODE_GROUP_LEVEL_1;
1589  }
1590 
1592  NODE_SOCKET_API(array<float>, ramp_alpha)
1593  NODE_SOCKET_API(float, fac)
1594  NODE_SOCKET_API(bool, interpolate)
1595 };
1596 
1597 class SetNormalNode : public ShaderNode {
1598  public:
1600  NODE_SOCKET_API(float3, direction)
1601 };
1602 
1603 class OSLNode final : public ShaderNode {
1604  public:
1605  static OSLNode *create(ShaderGraph *graph, size_t num_inputs, const OSLNode *from = NULL);
1606  ~OSLNode();
1607 
1608  static void operator delete(void *ptr)
1609  {
1610  /* Override delete operator to silence new-delete-type-mismatch ASAN warnings
1611  * regarding size mismatch in the destructor. This is intentional as we allocate
1612  * extra space at the end of the node. */
1613  ::operator delete(ptr);
1614  }
1615  static void operator delete(void *, void *)
1616  {
1617  /* Deliberately empty placement delete operator, to avoid MSVC warning C4291. */
1618  }
1619 
1620  ShaderNode *clone(ShaderGraph *graph) const;
1621 
1622  char *input_default_value();
1623  void add_input(ustring name, SocketType::Type type);
1624  void add_output(ustring name, SocketType::Type type);
1625 
1627 
1628  /* Ideally we could better detect this, but we can't query this now. */
1630  {
1631  return true;
1632  }
1634  {
1635  return true;
1636  }
1637 
1638  virtual bool equals(const ShaderNode & /*other*/)
1639  {
1640  return false;
1641  }
1642 
1643  string filepath;
1645 };
1646 
1647 class NormalMapNode : public ShaderNode {
1648  public:
1652  {
1653  return true;
1654  }
1656  {
1657  return true;
1658  }
1659  virtual int get_group()
1660  {
1661  return NODE_GROUP_LEVEL_3;
1662  }
1663 
1665  NODE_SOCKET_API(ustring, attribute)
1666  NODE_SOCKET_API(float, strength)
1667  NODE_SOCKET_API(float3, color)
1668  NODE_SOCKET_API(float3, normal_osl)
1669 };
1670 
1671 class TangentNode : public ShaderNode {
1672  public:
1676  {
1677  return true;
1678  }
1680  {
1681  return true;
1682  }
1683  virtual int get_group()
1684  {
1685  return NODE_GROUP_LEVEL_3;
1686  }
1687 
1688  NODE_SOCKET_API(NodeTangentDirectionType, direction_type)
1690  NODE_SOCKET_API(ustring, attribute)
1691  NODE_SOCKET_API(float3, normal_osl)
1692 };
1693 
1694 class BevelNode : public ShaderNode {
1695  public:
1698  {
1699  return true;
1700  }
1701  virtual int get_group()
1702  {
1703  return NODE_GROUP_LEVEL_3;
1704  }
1705  virtual bool has_raytrace()
1706  {
1707  return true;
1708  }
1709 
1710  NODE_SOCKET_API(float, radius)
1712  NODE_SOCKET_API(int, samples)
1713 };
1714 
1716  public:
1718  void constant_fold(const ConstantFolder &folder);
1719  virtual int get_feature()
1720  {
1721  return NODE_FEATURE_BUMP;
1722  }
1723 
1725  NODE_SOCKET_API(float, height)
1726  NODE_SOCKET_API(float, midlevel)
1727  NODE_SOCKET_API(float, scale)
1729 };
1730 
1732  public:
1736  {
1737  return true;
1738  }
1739  void constant_fold(const ConstantFolder &folder);
1740  virtual int get_feature()
1741  {
1742  return NODE_FEATURE_BUMP;
1743  }
1744 
1746  NODE_SOCKET_API(ustring, attribute)
1748  NODE_SOCKET_API(float, midlevel)
1749  NODE_SOCKET_API(float, scale)
1750 };
1751 
1753 
1754 #endif /* __NODES_H__ */
#define final(a, b, c)
Definition: BLI_hash.h:35
static uint8 component(Color32 c, uint i)
Definition: ColorBlock.cpp:126
NSNotificationCenter * center
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
Definition: btQuadWord.h:119
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
Definition: btVector3.h:356
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4710
virtual int get_group()
Definition: nodes.h:824
virtual bool has_raytrace()
Definition: nodes.h:828
bool has_spatial_varying()
Definition: nodes.h:820
bool has_attribute_dependency()
Definition: nodes.h:584
ClosureType get_closure_type()
Definition: nodes.h:579
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:2320
bool has_spatial_varying()
Definition: nodes.h:1321
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:5408
bool has_attribute_dependency()
Definition: nodes.h:1317
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:3182
virtual bool has_raytrace()
Definition: nodes.h:1705
virtual int get_group()
Definition: nodes.h:1701
bool has_spatial_varying()
Definition: nodes.h:1697
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5696
virtual int get_group()
Definition: nodes.h:1405
virtual int get_group()
Definition: nodes.h:394
virtual int get_group()
Definition: nodes.h:1256
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5160
virtual bool equals(const ShaderNode &)
Definition: nodes.h:543
virtual bool has_bump()
Definition: nodes.cpp:2230
ClosureType closure
Definition: nodes.h:550
virtual ClosureType get_closure_type()
Definition: nodes.h:537
BsdfBaseNode(const NodeType *node_type)
Definition: nodes.cpp:2225
bool has_spatial_varying()
Definition: nodes.h:533
BsdfNode(const NodeType *node_type)
Definition: nodes.cpp:2240
void compile(SVMCompiler &compiler, ShaderInput *param1, ShaderInput *param2, ShaderInput *param3=NULL, ShaderInput *param4=NULL)
Definition: nodes.cpp:2244
virtual int get_feature()
Definition: nodes.h:1531
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:6358
bool has_spatial_varying()
Definition: nodes.h:1527
bool has_spatial_varying()
Definition: nodes.h:1332
virtual int get_group()
Definition: nodes.h:1336
virtual int get_group()
Definition: nodes.h:368
virtual int get_group()
Definition: nodes.h:1436
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5875
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4660
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5061
virtual int get_group()
Definition: nodes.h:1215
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4965
virtual int get_group()
Definition: nodes.h:1201
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5013
virtual int get_group()
Definition: nodes.h:1229
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:2094
float value_float
Definition: nodes.h:513
float3 value_point
Definition: nodes.h:517
float3 value_normal
Definition: nodes.h:518
int value_int
Definition: nodes.h:514
float3 value_vector
Definition: nodes.h:516
ConvertNode(SocketType::Type from, SocketType::Type to, bool autoconvert=false)
Definition: nodes.cpp:2072
float3 value_color
Definition: nodes.h:515
CurvesNode(const NodeType *node_type)
Definition: nodes.cpp:6379
virtual int get_group()
Definition: nodes.h:1552
virtual void constant_fold(const ConstantFolder &)
Definition: graph.h:174
void compile(SVMCompiler &compiler, int type, ShaderInput *value_in, ShaderOutput *value_out)
Definition: nodes.cpp:6409
virtual int get_feature()
Definition: nodes.h:1719
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:6952
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:3133
bool has_surface_emission()
Definition: nodes.h:776
bool has_volume_support()
Definition: nodes.h:780
virtual int get_group()
Definition: nodes.h:146
bool has_attribute_dependency()
Definition: nodes.h:142
ImageParams image_params() const
Definition: nodes.cpp:541
virtual bool equals(const ShaderNode &other)
Definition: nodes.h:151
ShaderNode * clone(ShaderGraph *graph) const
Definition: nodes.cpp:534
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:552
virtual int get_group()
Definition: nodes.h:1349
bool has_spatial_varying()
Definition: nodes.h:1345
virtual int get_group()
Definition: nodes.h:1243
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5104
bool has_spatial_varying()
Definition: nodes.h:976
bool has_attribute_dependency()
Definition: nodes.h:972
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:3685
int get_group()
Definition: nodes.cpp:3789
ClosureType get_closure_type()
Definition: nodes.h:708
void simplify_settings(Scene *scene)
Definition: nodes.cpp:2472
bool has_integrator_dependency()
Definition: nodes.cpp:2509
bool has_integrator_dependency()
Definition: nodes.cpp:2416
void simplify_settings(Scene *scene)
Definition: nodes.cpp:2379
ClosureType get_closure_type()
Definition: nodes.h:689
virtual int get_group()
Definition: nodes.h:246
ClosureType get_closure_type()
Definition: nodes.h:956
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:4389
virtual int get_feature()
Definition: nodes.h:1090
virtual int get_group()
Definition: nodes.h:1086
bool has_attribute_dependency()
Definition: nodes.h:1078
bool has_spatial_varying()
Definition: nodes.h:1082
virtual ClosureType get_closure_type()
Definition: nodes.h:807
virtual int get_group()
Definition: nodes.h:803
ShaderNode * clone(ShaderGraph *graph) const
Definition: nodes.cpp:1238
virtual int get_group()
Definition: nodes.h:446
ImageHandle handle
Definition: nodes.h:100
ImageSlotTextureNode(const NodeType *node_type)
Definition: nodes.h:89
virtual bool equals(const ShaderNode &other)
Definition: nodes.h:94
ImageParams image_params() const
Definition: nodes.cpp:275
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:348
void cull_tiles(Scene *scene, ShaderGraph *graph)
Definition: nodes.cpp:286
bool has_attribute_dependency()
Definition: nodes.h:108
virtual bool equals(const ShaderNode &other)
Definition: nodes.h:113
ShaderNode * clone(ShaderGraph *graph) const
Definition: nodes.cpp:268
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4834
virtual int get_group()
Definition: nodes.h:1171
virtual int get_group()
Definition: nodes.h:1365
bool has_spatial_varying()
Definition: nodes.h:1361
virtual int get_group()
Definition: nodes.h:1041
bool has_spatial_varying()
Definition: nodes.h:1037
virtual int get_group()
Definition: nodes.h:1028
virtual int get_group()
Definition: nodes.h:348
void expand(ShaderGraph *graph)
Definition: nodes.cpp:5787
virtual int get_group()
Definition: nodes.h:1416
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:1941
virtual int get_group()
Definition: nodes.h:480
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:6044
void expand(ShaderGraph *graph)
Definition: nodes.cpp:6028
virtual int get_group()
Definition: nodes.h:1449
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4754
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4936
virtual int get_group()
Definition: nodes.h:1185
virtual int get_group()
Definition: nodes.h:304
virtual int get_group()
Definition: nodes.h:1659
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:6743
bool has_attribute_dependency()
Definition: nodes.h:1651
bool has_spatial_varying()
Definition: nodes.h:1655
virtual int get_group()
Definition: nodes.h:1466
string bytecode_hash
Definition: nodes.h:1644
virtual bool equals(const ShaderNode &)
Definition: nodes.h:1638
static OSLNode * create(ShaderGraph *graph, size_t num_inputs, const OSLNode *from=NULL)
Definition: nodes.cpp:6653
bool has_volume_support()
Definition: nodes.h:1633
ShaderNode * clone(ShaderGraph *graph) const
Definition: nodes.cpp:6648
~OSLNode()
Definition: nodes.cpp:6643
void add_output(ustring name, SocketType::Type type)
Definition: nodes.cpp:6695
bool has_spatial_varying()
Definition: nodes.h:1629
char * input_default_value()
Definition: nodes.cpp:6679
string filepath
Definition: nodes.h:1643
void add_input(ustring name, SocketType::Type type)
Definition: nodes.cpp:6687
virtual int get_group()
Definition: nodes.h:1053
virtual void simplify_settings(Scene *scene)
Definition: nodes.cpp:5932
virtual bool equals(const ShaderNode &)
Definition: nodes.h:233
virtual int get_group()
Definition: nodes.h:227
bool is_color
Definition: nodes.h:239
int slot
Definition: nodes.h:238
virtual bool equals(const ShaderNode &)
Definition: nodes.h:211
virtual int get_group()
Definition: nodes.h:1067
bool has_attribute_dependency()
Definition: nodes.h:1063
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:4282
bool has_spatial_varying()
Definition: nodes.h:416
ImageParams image_params() const
Definition: nodes.cpp:1799
virtual bool equals(const ShaderNode &other)
Definition: nodes.h:433
ImageHandle handle
Definition: nodes.h:429
ShaderNode * clone(ShaderGraph *graph) const
Definition: nodes.cpp:1781
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:1791
virtual int get_group()
Definition: nodes.h:403
bool has_attribute_dependency()
Definition: nodes.h:411
bool has_bssrdf_bump()
Definition: nodes.cpp:2977
bool has_attribute_dependency()
Definition: nodes.h:655
bool has_surface_bssrdf()
Definition: nodes.cpp:2838
void compile(SVMCompiler &compiler, ShaderInput *metallic, ShaderInput *subsurface, ShaderInput *subsurface_radius, ShaderInput *specular, ShaderInput *roughness, ShaderInput *specular_tint, ShaderInput *anisotropic, ShaderInput *sheen, ShaderInput *sheen_tint, ShaderInput *clearcoat, ShaderInput *clearcoat_roughness, ShaderInput *ior, ShaderInput *transmission, ShaderInput *anisotropic_rotation, ShaderInput *transmission_roughness)
Definition: nodes.cpp:2856
bool has_integrator_dependency()
Definition: nodes.cpp:2944
void expand(ShaderGraph *graph)
Definition: nodes.cpp:2783
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:2844
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:3535
bool has_attribute_dependency()
Definition: nodes.h:896
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:3411
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:6548
virtual int get_group()
Definition: nodes.h:1586
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:1996
bool has_integrator_dependency()
Definition: nodes.cpp:2602
void simplify_settings(Scene *scene)
Definition: nodes.cpp:2565
ClosureType get_closure_type()
Definition: nodes.h:728
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5311
virtual int get_group()
Definition: nodes.h:1282
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5205
virtual int get_group()
Definition: nodes.h:1270
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:5258
virtual int get_group()
Definition: nodes.h:1294
ShaderNodeSpecialType special_type
Definition: graph.h:229
virtual bool equals(const ShaderNode &other)
Definition: graph.cpp:174
virtual int get_feature()
Definition: graph.h:250
virtual void constant_fold(const ConstantFolder &)
Definition: graph.h:174
Definition: shader.h:80
float get_sun_size()
Definition: nodes.h:194
ImageHandle handle
Definition: nodes.h:192
virtual int get_group()
Definition: nodes.h:173
ClosureType get_closure_type()
Definition: nodes.h:759
bool has_surface_bssrdf()
Definition: nodes.h:754
bool has_attribute_dependency()
Definition: nodes.h:1675
virtual int get_group()
Definition: nodes.h:1683
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:6837
bool has_spatial_varying()
Definition: nodes.h:1679
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:3831
bool has_attribute_dependency()
Definition: nodes.h:989
bool has_spatial_varying()
Definition: nodes.h:993
int compile(SVMCompiler &compiler, ShaderInput *vector_in)
void compile_end(SVMCompiler &compiler, ShaderInput *vector_in, int vector_offset)
Definition: nodes.cpp:194
Transform compute_transform()
Definition: nodes.cpp:81
Projection projection
Definition: nodes.h:62
Mapping x_mapping
Definition: nodes.h:59
float3 max
Definition: nodes.h:52
bool use_minmax
Definition: nodes.h:53
Mapping z_mapping
Definition: nodes.h:59
float3 rotation
Definition: nodes.h:49
TextureMapping()
Definition: nodes.cpp:77
void compile(SVMCompiler &compiler, int offset_in, int offset_out)
Definition: nodes.cpp:155
Mapping y_mapping
Definition: nodes.h:59
float3 scale
Definition: nodes.h:50
Type type
Definition: nodes.h:56
bool skip()
Definition: nodes.cpp:138
int compile_begin(SVMCompiler &compiler, ShaderInput *vector_in)
Definition: nodes.cpp:180
float3 translation
Definition: nodes.h:48
float3 min
Definition: nodes.h:52
TextureMapping tex_mapping
Definition: nodes.h:72
TextureNode(const NodeType *node_type)
Definition: nodes.h:69
bool has_surface_transparent()
Definition: nodes.h:670
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:3978
bool has_attribute_dependency()
Definition: nodes.h:1008
virtual int get_group()
Definition: nodes.h:1016
bool has_spatial_varying()
Definition: nodes.h:1012
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:4626
virtual int get_feature()
Definition: nodes.h:1740
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:7011
bool has_attribute_dependency()
Definition: nodes.h:1735
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:7020
virtual int get_group()
Definition: nodes.h:1478
void constant_fold(const ConstantFolder &folder)
Definition: nodes.cpp:6134
virtual int get_group()
Definition: nodes.h:1495
virtual int get_group()
Definition: nodes.h:1512
bool has_spatial_varying()
Definition: nodes.h:1119
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:4545
bool has_attribute_dependency()
Definition: nodes.h:1115
bool has_spatial_varying()
Definition: nodes.h:1104
void expand(ShaderGraph *graph)
Definition: nodes.cpp:4487
bool has_attribute_dependency()
Definition: nodes.h:1100
void attributes(Shader *shader, AttributeRequestSet *attributes)
Definition: nodes.cpp:4467
void compile(SVMCompiler &compiler, ShaderInput *param1, ShaderInput *param2)
Definition: nodes.cpp:3288
ClosureType closure
Definition: nodes.h:870
virtual bool has_volume_support()
Definition: nodes.h:860
virtual int get_feature()
Definition: nodes.h:852
virtual ClosureType get_closure_type()
Definition: nodes.h:856
VolumeNode(const NodeType *node_type)
Definition: nodes.cpp:3283
virtual int get_group()
Definition: nodes.h:848
virtual bool equals(const ShaderNode &)
Definition: nodes.h:873
virtual int get_feature()
Definition: nodes.h:277
virtual int get_group()
Definition: nodes.h:272
virtual int get_group()
Definition: nodes.h:325
virtual int get_group()
Definition: nodes.h:1393
virtual int get_group()
Definition: nodes.h:467
bool has_spatial_varying()
Definition: nodes.h:1377
virtual int get_group()
Definition: nodes.h:1381
Depsgraph * graph
StackEntry * from
Scene scene
static CCL_NAMESPACE_BEGIN const double alpha
struct @203::@204 surface
IMETHOD void random(Vector &a)
addDelta operator for displacement rotational velocity.
Definition: frames.inl:1282
#define SHADER_NODE_NO_CLONE_CLASS(type)
Definition: graph.h:285
@ SHADER_SPECIAL_TYPE_IMAGE_SLOT
Definition: graph.h:65
#define SHADER_NODE_CLASS(type)
Definition: graph.h:275
#define SHADER_NODE_BASE_CLASS(type)
Definition: graph.h:291
IconTextureDrawCall normal
#define CCL_NAMESPACE_END
#define fmaxf(x, y)
void KERNEL_FUNCTION_FULL_NAME() shader(KernelGlobals *kg, uint4 *input, float4 *output, int type, int filter, int i, int offset, int sample)
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
static const pxr::TfToken metallic("metallic", pxr::TfToken::Immortal)
#define NODE_SOCKET_API_STRUCT_MEMBER(type_, name, member)
Definition: node.h:84
#define NODE_SOCKET_API(type_, name)
Definition: node.h:63
static const int steps
Definition: sky_nishita.cpp:28
#define min(a, b)
Definition: sort.c:51
Definition: node.h:98
const NodeType * type
Definition: node.h:175
ustring name
Definition: node.h:174
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
Definition: svm_invert.h:19
NodeClampType
Definition: svm_types.h:346
NodeEnvironmentProjection
Definition: svm_types.h:489
NodeMathType
Definition: svm_types.h:271
#define NODE_FEATURE_BUMP
Definition: svm_types.h:50
NodeMusgraveType
Definition: svm_types.h:396
#define NODE_GROUP_LEVEL_4
Definition: svm_types.h:45
NodeMapRangeType
Definition: svm_types.h:351
NodeWaveBandsDirection
Definition: svm_types.h:406
NodeMappingType
Definition: svm_types.h:358
NodeVectorTransformConvertSpace
Definition: svm_types.h:379
NodeTangentAxis
Definition: svm_types.h:463
#define NODE_FEATURE_HAIR
Definition: svm_types.h:49
NodePrincipledHairParametrization
Definition: svm_types.h:518
NodeVoronoiFeature
Definition: svm_types.h:445
@ NODE_VORONOI_SMOOTH_F1
Definition: svm_types.h:448
#define NODE_GROUP_LEVEL_3
Definition: svm_types.h:44
NodeWaveType
Definition: svm_types.h:404
#define NODE_FEATURE_VOLUME
Definition: svm_types.h:48
#define NODE_GROUP_LEVEL_2
Definition: svm_types.h:43
#define NODE_FEATURE_VORONOI_EXTRA
Definition: svm_types.h:52
NodeVoronoiDistanceMetric
Definition: svm_types.h:438
NodeSkyType
Definition: svm_types.h:426
NodeWaveProfile
Definition: svm_types.h:420
NodeTexVoxelSpace
Definition: svm_types.h:500
NodeMix
Definition: svm_types.h:249
#define NODE_GROUP_LEVEL_1
Definition: svm_types.h:42
ClosureType
Definition: svm_types.h:527
@ CLOSURE_HOLDOUT_ID
Definition: svm_types.h:582
NodeVectorRotateType
Definition: svm_types.h:365
NodeVectorTransformType
Definition: svm_types.h:373
NodeImageProjection
Definition: svm_types.h:477
NodeGradientType
Definition: svm_types.h:428
NodeTangentDirectionType
Definition: svm_types.h:458
NodeVectorMathType
Definition: svm_types.h:314
NodeWaveRingsDirection
Definition: svm_types.h:413
NodeNormalMapSpace
Definition: svm_types.h:469
static int blend(const Tex *tex, const float texvec[3], TexResult *texres)
float max
ccl_device_inline int clamp(int a, int mn, int mx)
Definition: util_math.h:283
ccl_device_inline float distance(const float2 &a, const float2 &b)
ImageAlphaType
Definition: util_texture.h:68
InterpolationType
Definition: util_texture.h:38
ExtensionType
Definition: util_texture.h:84
PointerRNA * ptr
Definition: wm_files.c:3157