|
Blender V4.3
|
Public Member Functions | |
| GPUCodegen (GPUMaterial *mat_, GPUNodeGraph *graph_) | |
| ~GPUCodegen () | |
| uint32_t | hash_get () const |
| bool | should_optimize_heuristic () const |
Public Attributes | |
| GPUMaterial & | mat |
| GPUNodeGraph & | graph |
| GPUCodegenOutput | output = {} |
| GPUCodegenCreateInfo * | create_info = nullptr |
GLSL code generation | |
| void | generate_graphs () |
| void | generate_cryptomatte () |
| void | generate_uniform_buffer () |
| void | generate_attribs () |
| void | generate_resources () |
| void | generate_library () |
Definition at line 263 of file gpu_codegen.cc.
|
inline |
Definition at line 282 of file gpu_codegen.cc.
References BLI_hash_mm2a_add_int(), BLI_hash_mm2a_init(), create_info, GPU_material_flag(), GPU_material_uuid_get(), and mat.
|
inline |
Definition at line 291 of file gpu_codegen.cc.
References BLI_freelistN(), create_info, and MEM_SAFE_FREE.
| void GPUCodegen::generate_attribs | ( | ) |
Definition at line 331 of file gpu_codegen.cc.
References GPUCodegenCreateInfo::NameBuffer::attr_names, BLI_assert_msg, BLI_listbase_is_empty(), CD_ORCO, CD_TANGENT, create_info, GPU_FLOAT, GPU_shader_draw_parameters_support(), GPU_VEC3, GPU_VEC4, GPUCodegenCreateInfo::interface_generated, LISTBASE_FOREACH, GPUCodegenCreateInfo::name_buffer, blender::gpu::shader::StageInterfaceInfo::smooth(), SNPRINTF, STRNCPY, blender::gpu::shader::to_type(), GPUCodegenCreateInfo::NameBuffer::var_names, blender::gpu::shader::ShaderCreateInfo::vertex_in(), and blender::gpu::shader::ShaderCreateInfo::vertex_out().
Referenced by GPU_generate_pass().
| void GPUCodegen::generate_cryptomatte | ( | ) |
Definition at line 608 of file gpu_codegen.cc.
References BLI_addtail(), BLI_genericNodeN(), BLI_strnlen(), GPU_FLOAT, GPU_material_get_material(), GPU_SOURCE_CRYPTOMATTE, hash, mat, MAX_NAME, MEM_callocN, GPUInput::source, GPUInput::type, and GPUInput::vec.
Referenced by GPU_generate_pass().
| void GPUCodegen::generate_graphs | ( | ) |
Definition at line 658 of file gpu_codegen.cc.
References BLI_hash_mm2a_add(), BLI_hash_mm2a_end(), BLI_listbase_is_empty(), GPU_NODE_TAG_AOV, GPU_NODE_TAG_COMPOSITOR, GPU_NODE_TAG_DISPLACEMENT, GPU_NODE_TAG_FUNCTION, GPU_NODE_TAG_SURFACE, GPU_NODE_TAG_THICKNESS, GPU_NODE_TAG_VOLUME, gpu_nodes_tag(), and LISTBASE_FOREACH.
Referenced by GPU_generate_pass().
| void GPUCodegen::generate_library | ( | ) |
Definition at line 461 of file gpu_codegen.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Vector< T, InlineBufferCapacity, Allocator >::begin(), BLI_ghashIterator_done(), BLI_ghashIterator_free(), BLI_ghashIterator_getKey(), BLI_ghashIterator_new(), BLI_ghashIterator_step(), create_info, blender::gpu::shader::ShaderCreateInfo::dependencies_generated, blender::Vector< T, InlineBufferCapacity, Allocator >::end(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend_non_duplicates(), and blender::gpu::shader::gpu_shader_dependency_get_resolved_source().
Referenced by GPU_generate_pass().
| void GPUCodegen::generate_resources | ( | ) |
Definition at line 392 of file gpu_codegen.cc.
References blender::gpu::shader::ShaderCreateInfo::additional_info(), GPUCodegenCreateInfo::NameBuffer::append_sampler_name(), BLI_listbase_is_empty(), create_info, GPU_ATTRIBUTE_UBO_BLOCK_NAME, GPU_NODE_TREE_UBO_SLOT, GPU_SOURCE_CRYPTOMATTE, GPU_UBO_BLOCK_NAME, LISTBASE_FOREACH, GPUCodegenCreateInfo::name_buffer, blender::gpu::shader::ShaderCreateInfo::sampler(), tex, GPUInput::type, blender::gpu::shader::ShaderCreateInfo::typedef_source_generated, and blender::gpu::shader::ShaderCreateInfo::uniform_buf().
Referenced by GPU_generate_pass().
| void GPUCodegen::generate_uniform_buffer | ( | ) |
Definition at line 626 of file gpu_codegen.cc.
References BLI_addtail(), BLI_genericNodeN(), BLI_listbase_is_empty(), GPU_material_uniform_buffer_create(), GPU_SOURCE_UNIFORM, LISTBASE_FOREACH, and mat.
Referenced by GPU_generate_pass().
|
inline |
Definition at line 305 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().
|
inline |
Definition at line 312 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().
| GPUCodegenCreateInfo* GPUCodegen::create_info = nullptr |
Definition at line 268 of file gpu_codegen.cc.
Referenced by generate_attribs(), generate_library(), generate_resources(), GPU_generate_pass(), GPUCodegen(), and ~GPUCodegen().
| GPUNodeGraph& GPUCodegen::graph |
Definition at line 266 of file gpu_codegen.cc.
| GPUMaterial& GPUCodegen::mat |
Definition at line 265 of file gpu_codegen.cc.
Referenced by generate_cryptomatte(), generate_uniform_buffer(), and GPUCodegen().
| GPUCodegenOutput GPUCodegen::output = {} |
Definition at line 267 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().