Blender
V3.3
|
Public Member Functions | |
GPUCodegen (GPUMaterial *mat_, GPUNodeGraph *graph_) | |
~GPUCodegen () | |
uint32_t | hash_get () const |
Public Attributes | |
GPUMaterial & | mat |
GPUNodeGraph & | graph |
GPUCodegenOutput | output = {} |
GPUCodegenCreateInfo * | create_info = nullptr |
GLSL code generation | |
void | generate_graphs () |
void | generate_uniform_buffer () |
void | generate_attribs () |
void | generate_resources () |
void | generate_library () |
Definition at line 229 of file gpu_codegen.cc.
|
inline |
Definition at line 242 of file gpu_codegen.cc.
References blender::gpu::shader::ShaderCreateInfo::additional_info(), BLI_hash_mm2a_add_int(), BLI_hash_mm2a_init(), GPU_material_flag(), GPU_material_flag_get(), GPU_material_uuid_get(), GPU_MATFLAG_OBJECT_INFO, and output.
|
inline |
Definition at line 255 of file gpu_codegen.cc.
References BLI_freelistN(), MEM_SAFE_FREE, and output.
void GPUCodegen::generate_attribs | ( | ) |
Definition at line 291 of file gpu_codegen.cc.
References GPUCodegenCreateInfo::NameBuffer::attr_names, BLI_assert_msg, BLI_listbase_is_empty(), CD_HAIRLENGTH, CD_ORCO, CD_TANGENT, GPU_FLOAT, GPU_VEC3, GPU_VEC4, graph, GPUCodegenCreateInfo::interface_generated, LISTBASE_FOREACH, GPUCodegenCreateInfo::name_buffer, output, 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_graphs | ( | ) |
Definition at line 552 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_DISPLACEMENT, GPU_NODE_TAG_FUNCTION, GPU_NODE_TAG_SURFACE, GPU_NODE_TAG_THICKNESS, GPU_NODE_TAG_VOLUME, graph, LISTBASE_FOREACH, MEM_SAFE_FREE, and output.
Referenced by GPU_generate_pass().
void GPUCodegen::generate_library | ( | ) |
Definition at line 420 of file gpu_codegen.cc.
References BLI_gset_pop(), blender::gpu::shader::ShaderCreateInfo::dependencies_generated, blender::Vector< T, InlineBufferCapacity, Allocator >::extend_non_duplicates(), blender::gpu::shader::gpu_shader_dependency_get_resolved_source(), and graph.
Referenced by GPU_generate_pass().
void GPUCodegen::generate_resources | ( | ) |
Definition at line 350 of file gpu_codegen.cc.
References GPUCodegenCreateInfo::NameBuffer::append_sampler_name(), blender::gpu::shader::BATCH, BLI_listbase_is_empty(), blender::gpu::shader::ShaderCreateInfo::define(), blender::gpu::shader::FLOAT_1D_ARRAY, blender::gpu::shader::FLOAT_2D, blender::gpu::shader::FLOAT_2D_ARRAY, GPU_ATTRIBUTE_UBO_BLOCK_NAME, GPU_material_flag_get(), GPU_MATFLAG_PRINCIPLED_ANY, GPU_MATFLAG_PRINCIPLED_CLEARCOAT, GPU_MATFLAG_PRINCIPLED_DIELECTRIC, GPU_MATFLAG_PRINCIPLED_GLASS, GPU_MATFLAG_PRINCIPLED_METALLIC, GPU_UBO_BLOCK_NAME, graph, input, LISTBASE_FOREACH, GPUCodegenCreateInfo::name_buffer, blender::gpu::shader::ShaderCreateInfo::sampler(), tex, 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 521 of file gpu_codegen.cc.
References BLI_addtail(), BLI_genericNodeN(), BLI_listbase_is_empty(), GPU_material_uniform_buffer_create(), GPU_SOURCE_UNIFORM, graph, input, LISTBASE_FOREACH, and node.
Referenced by GPU_generate_pass().
|
inline |
Definition at line 273 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().
GPUCodegenCreateInfo* GPUCodegen::create_info = nullptr |
Definition at line 234 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().
GPUNodeGraph& GPUCodegen::graph |
Definition at line 232 of file gpu_codegen.cc.
GPUMaterial& GPUCodegen::mat |
Definition at line 231 of file gpu_codegen.cc.
GPUCodegenOutput GPUCodegen::output = {} |
Definition at line 233 of file gpu_codegen.cc.
Referenced by GPU_generate_pass().