241 bool is_volume_shader,
#define ENUM_OPERATORS(_type, _max)
These structs are the foundation for all linked lists in the library system.
void(*)(void *thunk, GPUMaterial *material) ConstructGPUMaterialFn
bool GPU_stack_link(GPUMaterial *mat, const bNode *node, const char *name, GPUNodeStack *in, GPUNodeStack *out,...)
char * GPU_material_split_sub_function(GPUMaterial *material, eGPUType return_type, GPUNodeLink **link)
uint64_t GPU_material_uuid_get(GPUMaterial *mat)
GPUNodeLink * GPU_constant(const float *num)
bool GPU_material_async_try_finalize(GPUMaterial *mat)
void GPU_material_acquire(GPUMaterial *mat)
void GPU_material_compile(GPUMaterial *mat)
void GPU_pass_cache_garbage_collect()
ListBase GPU_material_attributes(const GPUMaterial *material)
void GPU_material_output_surface(GPUMaterial *material, GPUNodeLink *link)
GPUNodeLink * GPU_attribute_hair_length(GPUMaterial *mat)
GPUPass * GPU_material_get_pass(GPUMaterial *material)
void GPU_material_async_compile(GPUMaterial *mat)
bool GPU_material_has_surface_output(GPUMaterial *mat)
GPUNodeLink * GPU_layer_attribute(GPUMaterial *mat, const char *name)
GPUNodeLink * GPU_attribute_default_color(GPUMaterial *mat)
void GPU_material_status_set(GPUMaterial *mat, eGPUMaterialStatus status)
void GPU_material_free_single(GPUMaterial *material)
void GPU_materials_free(Main *bmain)
void GPU_material_free(ListBase *gpumaterial)
void GPU_material_output_displacement(GPUMaterial *material, GPUNodeLink *link)
const ListBase * GPU_material_layer_attributes(const GPUMaterial *material)
void GPU_material_output_thickness(GPUMaterial *material, GPUNodeLink *link)
GPUShader * GPU_material_get_shader(GPUMaterial *material)
void GPU_material_optimize(GPUMaterial *mat)
void GPU_material_add_output_link_aov(GPUMaterial *material, GPUNodeLink *link, int hash)
bool GPU_material_optimization_ready(GPUMaterial *mat)
bool GPU_material_flag_get(const GPUMaterial *mat, eGPUMaterialFlag flag)
Scene * GPU_material_scene(GPUMaterial *material)
bool GPU_material_recalc_flag_get(GPUMaterial *mat)
GPUNodeLink * GPU_color_band(GPUMaterial *mat, int size, float *pixels, float *r_row)
GPUShader * GPU_material_get_shader_base(GPUMaterial *material)
ListBase GPU_material_textures(GPUMaterial *material)
void GPU_pass_cache_init()
void GPU_material_add_output_link_composite(GPUMaterial *material, GPUNodeLink *link)
bool GPU_material_sss_profile_create(GPUMaterial *material, float radii[3])
GPUMaterial * GPU_material_from_callbacks(eGPUMaterialEngine engine, ConstructGPUMaterialFn construct_function_cb, GPUCodegenCallbackFn generate_code_function_cb, void *thunk)
void GPU_material_release(GPUMaterial *mat)
eGPUMaterialStatus GPU_material_status(GPUMaterial *mat)
GPUMaterial * GPU_material_from_nodetree(Scene *scene, Material *ma, bNodeTree *ntree, ListBase *gpumaterials, const char *name, eGPUMaterialEngine engine, uint64_t shader_uuid, bool is_volume_shader, bool is_lookdev, GPUCodegenCallbackFn callback, void *thunk, GPUMaterialPassReplacementCallbackFn pass_replacement_cb=nullptr)
@ GPU_MATFLAG_VOLUME_SCATTER
@ GPU_MATFLAG_SHADER_TO_RGBA
@ GPU_MATFLAG_VOLUME_ABSORPTION
@ GPU_MATFLAG_OBJECT_INFO
@ GPU_MATFLAG_BARYCENTRIC
@ GPU_MATFLAG_LOOKDEV_HACK
@ GPU_MATFLAG_TRANSLUCENT
@ GPU_MATFLAG_TRANSPARENT
void GPU_material_flag_set(GPUMaterial *mat, eGPUMaterialFlag flag)
void(*)(void *thunk, GPUMaterial *mat, GPUCodegenOutput *codegen) GPUCodegenCallbackFn
Material * GPU_material_get_material(GPUMaterial *material)
GPUNodeLink * GPU_image(GPUMaterial *mat, Image *ima, ImageUser *iuser, GPUSamplerState sampler_state)
void GPU_uniform_attr_list_copy(GPUUniformAttrList *dest, const GPUUniformAttrList *src)
GHash * GPU_uniform_attr_list_hash_new(const char *info)
void GPU_uniform_attr_list_free(GPUUniformAttrList *set)
void GPU_material_output_volume(GPUMaterial *material, GPUNodeLink *link)
eGPUMaterialFlag GPU_material_flag(const GPUMaterial *mat)
GPUNodeLink * GPU_uniform_attribute(GPUMaterial *mat, const char *name, bool use_dupli, uint32_t *r_hash)
GPUNodeLink * GPU_image_sky(GPUMaterial *mat, int width, int height, const float *pixels, float *layer, GPUSamplerState sampler_state)
eGPUMaterialOptimizationStatus
@ GPU_MAT_OPTIMIZATION_READY
@ GPU_MAT_OPTIMIZATION_QUEUED
@ GPU_MAT_OPTIMIZATION_SUCCESS
@ GPU_MAT_OPTIMIZATION_SKIP
GPUPass *(*)(void *thunk, GPUMaterial *mat) GPUMaterialPassReplacementCallbackFn
void GPU_material_optimization_status_set(GPUMaterial *mat, eGPUMaterialOptimizationStatus status)
const char * GPU_material_get_name(GPUMaterial *material)
void GPU_image_tiled(GPUMaterial *mat, Image *ima, ImageUser *iuser, GPUSamplerState sampler_state, GPUNodeLink **r_image_tiled_link, GPUNodeLink **r_image_tiled_mapping_link)
GPUNodeLink * GPU_attribute_with_default(GPUMaterial *mat, eCustomDataType type, const char *name, eGPUDefaultValue default_value)
GPUNodeLink * GPU_attribute(GPUMaterial *mat, eCustomDataType type, const char *name)
void GPU_material_set_default(GPUMaterial *material, GPUMaterial *default_material)
const GPUUniformAttrList * GPU_material_uniform_attributes(const GPUMaterial *material)
bool GPU_material_has_displacement_output(GPUMaterial *mat)
void GPU_pass_cache_free()
GPUNodeLink * GPU_differentiate_float_function(const char *function_name)
void GPU_material_uniform_buffer_create(GPUMaterial *material, ListBase *inputs)
bool GPU_link(GPUMaterial *mat, const char *name,...)
GPUUniformBuf * GPU_material_uniform_buffer_get(GPUMaterial *material)
bool GPU_material_has_volume_output(GPUMaterial *mat)
eGPUMaterialOptimizationStatus GPU_material_optimization_status(GPUMaterial *mat)
GPUNodeLink * GPU_uniform(const float *num)
struct GPUShader GPUShader
DEGForeachIDComponentCallback callback
unsigned __int64 uint64_t
std::string material_functions
GPUShaderCreateInfo * create_info
GPUMaterialAttribute * prev
eGPUDefaultValue default_value
GPUMaterialAttribute * next
GPUMaterialTexture * prev
GPUSamplerState sampler_state
char tiled_mapping_name[32]
GPUMaterialTexture * next