|
Blender V4.3
|
#include "DNA_customdata_types.h"#include "DNA_listBase.h"#include "BLI_ghash.h"#include "GPU_material.hh"#include "GPU_shader.hh"Go to the source code of this file.
Classes | |
| struct | GPUNode |
| struct | GPUNodeLink |
| struct | GPUOutput |
| struct | GPUInput |
| struct | GPUNodeGraphOutputLink |
| struct | GPUNodeGraphFunctionLink |
| struct | GPUNodeGraph |
Enumerations | |
| enum | eGPUDataSource { GPU_SOURCE_OUTPUT , GPU_SOURCE_CONSTANT , GPU_SOURCE_UNIFORM , GPU_SOURCE_ATTR , GPU_SOURCE_UNIFORM_ATTR , GPU_SOURCE_LAYER_ATTR , GPU_SOURCE_STRUCT , GPU_SOURCE_TEX , GPU_SOURCE_TEX_TILED_MAPPING , GPU_SOURCE_FUNCTION_CALL , GPU_SOURCE_CRYPTOMATTE } |
| enum | GPUNodeLinkType { GPU_NODE_LINK_NONE = 0 , GPU_NODE_LINK_ATTR , GPU_NODE_LINK_UNIFORM_ATTR , GPU_NODE_LINK_LAYER_ATTR , GPU_NODE_LINK_COLORBAND , GPU_NODE_LINK_CONSTANT , GPU_NODE_LINK_IMAGE , GPU_NODE_LINK_IMAGE_TILED , GPU_NODE_LINK_IMAGE_TILED_MAPPING , GPU_NODE_LINK_IMAGE_SKY , GPU_NODE_LINK_OUTPUT , GPU_NODE_LINK_UNIFORM , GPU_NODE_LINK_DIFFERENTIATE_FLOAT_FN } |
| enum | eGPUNodeTag { GPU_NODE_TAG_NONE = 0 , GPU_NODE_TAG_SURFACE = (1 << 0) , GPU_NODE_TAG_VOLUME = (1 << 1) , GPU_NODE_TAG_DISPLACEMENT = (1 << 2) , GPU_NODE_TAG_THICKNESS = (1 << 3) , GPU_NODE_TAG_AOV = (1 << 4) , GPU_NODE_TAG_FUNCTION = (1 << 5) , GPU_NODE_TAG_COMPOSITOR = (1 << 6) } |
Functions | |
| void | gpu_nodes_tag (GPUNodeLink *link, eGPUNodeTag tag) |
| void | gpu_node_graph_prune_unused (GPUNodeGraph *graph) |
| void | gpu_node_graph_finalize_uniform_attrs (GPUNodeGraph *graph) |
| void | gpu_node_graph_optimize (GPUNodeGraph *graph) |
| void | gpu_node_graph_free_nodes (GPUNodeGraph *graph) |
| void | gpu_node_graph_free (GPUNodeGraph *graph) |
| GPUNodeGraph * | gpu_material_node_graph (GPUMaterial *material) |
| GPUTexture ** | gpu_material_ramp_texture_row_set (GPUMaterial *mat, int size, const float *pixels, float *r_row) |
| GPUTexture ** | gpu_material_sky_texture_layer_set (GPUMaterial *mat, int width, int height, const float *pixels, float *row) |
Intermediate node graph for generating GLSL shaders.
Definition in file gpu_node_graph.hh.
| enum eGPUDataSource |
Definition at line 25 of file gpu_node_graph.hh.
| enum eGPUNodeTag |
| Enumerator | |
|---|---|
| GPU_NODE_TAG_NONE | |
| GPU_NODE_TAG_SURFACE | |
| GPU_NODE_TAG_VOLUME | |
| GPU_NODE_TAG_DISPLACEMENT | |
| GPU_NODE_TAG_THICKNESS | |
| GPU_NODE_TAG_AOV | |
| GPU_NODE_TAG_FUNCTION | |
| GPU_NODE_TAG_COMPOSITOR | |
Definition at line 55 of file gpu_node_graph.hh.
| enum GPUNodeLinkType |
Definition at line 39 of file gpu_node_graph.hh.
| GPUNodeGraph * gpu_material_node_graph | ( | GPUMaterial * | material | ) |
Definition at line 489 of file gpu_material.cc.
Referenced by GPU_attribute(), GPU_attribute_default_color(), GPU_attribute_hair_length(), GPU_color_band(), GPU_image(), GPU_image_sky(), GPU_image_tiled(), GPU_layer_attribute(), GPU_link(), gpu_stack_link_v(), and GPU_uniform_attribute().
| GPUTexture ** gpu_material_ramp_texture_row_set | ( | GPUMaterial * | mat, |
| int | size, | ||
| const float * | pixels, | ||
| float * | r_row ) |
Returns the address of the future pointer to coba_tex.
Definition at line 185 of file gpu_material.cc.
References BLI_assert, CM_TABLE, GPUMaterial::coba_builder, GPUMaterial::coba_tex, GPUColorBandBuilder::current_layer, float, MAX_COLOR_BAND, MEM_mallocN, GPUColorBandBuilder::pixels, printf, and UNUSED_VARS_NDEBUG.
Referenced by GPU_color_band().
| GPUTexture ** gpu_material_sky_texture_layer_set | ( | GPUMaterial * | mat, |
| int | width, | ||
| int | height, | ||
| const float * | pixels, | ||
| float * | row ) |
Returns the address of the future pointer to sky_tex
Definition at line 155 of file gpu_material.cc.
References BLI_assert, GPUSkyBuilder::current_layer, float, GPU_SKY_HEIGHT, GPU_SKY_WIDTH, MAX_GPU_SKIES, MEM_mallocN, GPUSkyBuilder::pixels, printf, GPUMaterial::sky_builder, GPUMaterial::sky_tex, and UNUSED_VARS_NDEBUG.
Referenced by GPU_image_sky().
| void gpu_node_graph_finalize_uniform_attrs | ( | GPUNodeGraph * | graph | ) |
Definition at line 327 of file gpu_node_graph.cc.
References BLI_assert, BLI_ghashutil_uinthash(), BLI_listbase_count(), BLI_listbase_sort(), GPUUniformAttrList::count, GPUUniformAttrList::hash_code, GPUUniformAttrList::list, LISTBASE_FOREACH, and uniform_attr_sort_cmp().
Referenced by GPU_generate_pass().
| void gpu_node_graph_free | ( | GPUNodeGraph * | graph | ) |
Free both node graph and requested attributes and textures.
Definition at line 895 of file gpu_node_graph.cc.
References BLI_freelistN(), BLI_gset_free(), gpu_node_graph_free_nodes(), and GPU_uniform_attr_list_free().
Referenced by gpu_material_finalize(), GPU_material_free_single(), GPU_material_from_callbacks(), and GPU_material_from_nodetree().
| void gpu_node_graph_free_nodes | ( | GPUNodeGraph * | graph | ) |
Free intermediate node graph.
Definition at line 883 of file gpu_node_graph.cc.
References BLI_pophead(), and gpu_node_free().
Referenced by gpu_material_finalize(), GPU_material_from_callbacks(), GPU_material_from_nodetree(), GPU_material_optimize(), and gpu_node_graph_free().
| void gpu_node_graph_optimize | ( | GPUNodeGraph * | graph | ) |
Optimize node graph for optimized material shader path. Once the base material has been generated, we can modify the shader node graph to create one which will produce an optimally performing shader. This currently involves baking uniform data into constant data to enable aggressive constant folding by the compiler in order to reduce complexity and shader core memory pressure.
NOTE: Graph optimizations will produce a shader which needs to be re-compiled more frequently, however, the default material pass will always exist to fall back on.
Definition at line 1006 of file gpu_node_graph.cc.
References GPU_CLOSURE, GPU_NODE_LINK_CONSTANT, GPU_NODE_LINK_UNIFORM, GPU_SOURCE_CONSTANT, GPU_SOURCE_STRUCT, GPU_SOURCE_UNIFORM, and LISTBASE_FOREACH.
Referenced by GPU_generate_pass().
| void gpu_node_graph_prune_unused | ( | GPUNodeGraph * | graph | ) |
Definition at line 936 of file gpu_node_graph.cc.
References BLI_freelinkN(), BLI_remlink(), GPUUniformAttrList::count, gpu_node_free(), GPU_NODE_TAG_AOV, GPU_NODE_TAG_COMPOSITOR, GPU_NODE_TAG_DISPLACEMENT, GPU_NODE_TAG_FUNCTION, GPU_NODE_TAG_NONE, GPU_NODE_TAG_SURFACE, GPU_NODE_TAG_THICKNESS, GPU_NODE_TAG_VOLUME, gpu_nodes_tag(), GPUUniformAttrList::list, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, next, node, and tex.
Referenced by GPU_generate_pass().
| void gpu_nodes_tag | ( | GPUNodeLink * | link, |
| eGPUNodeTag | tag ) |
Definition at line 915 of file gpu_node_graph.cc.
References gpu_nodes_tag(), LISTBASE_FOREACH, GPUOutput::node, node, GPUNodeLink::output, and GPUNode::tag.
Referenced by GPUCodegen::generate_graphs(), gpu_node_graph_prune_unused(), and gpu_nodes_tag().