45 #if defined(IRRADIANCE_SH_L2)
46 "#define IRRADIANCE_SH_L2\n";
47 #elif defined(IRRADIANCE_HL2)
48 "#define IRRADIANCE_HL2\n";
350 return e_data.probe_filter_glossy_sh;
359 return e_data.probe_filter_diffuse_sh;
364 if (
e_data.probe_filter_visibility_sh ==
NULL) {
368 return e_data.probe_filter_visibility_sh;
377 return e_data.probe_grid_fill_sh;
382 if (
e_data.probe_planar_downsample_sh ==
NULL) {
390 return e_data.probe_planar_downsample_sh;
402 return e_data.studiolight_probe_sh;
407 if (
e_data.studiolight_background_sh ==
NULL) {
415 return e_data.studiolight_background_sh;
428 return e_data.probe_cube_display_sh;
441 return e_data.probe_grid_display_sh;
454 return e_data.probe_planar_display_sh;
467 return e_data.color_copy_sh;
476 return e_data.downsample_sh;
489 return e_data.downsample_cube_sh;
496 "#define MIN_PASS\n");
498 return e_data.minz_downlevel_sh;
505 "#define MAX_PASS\n");
507 return e_data.maxz_downlevel_sh;
514 "#define MIN_PASS\n");
516 return e_data.minz_downdepth_sh;
523 "#define MAX_PASS\n");
525 return e_data.maxz_downdepth_sh;
533 "#define LAYERED\n");
535 return e_data.minz_downdepth_layer_sh;
543 "#define LAYERED\n");
545 return e_data.maxz_downdepth_layer_sh;
553 "#define COPY_DEPTH\n"
554 "#define LAYERED\n");
556 return e_data.maxz_copydepth_layer_sh;
564 "#define COPY_DEPTH\n");
566 return e_data.minz_copydepth_sh;
574 "#define COPY_DEPTH\n");
576 return e_data.maxz_copydepth_sh;
600 return e_data.ggx_refraction_lut_sh;
624 #define TILE_SIZE_STR "#define EEVEE_VELOCITY_TILE_SIZE " STRINGIFY(EEVEE_VELOCITY_TILE_SIZE) "\n"
631 return e_data.motion_blur_sh;
640 return e_data.motion_blur_object_sh;
652 return e_data.motion_blur_hair_sh;
661 return e_data.velocity_tiles_sh;
666 if (
e_data.velocity_tiles_expand_sh ==
NULL) {
670 return e_data.velocity_tiles_expand_sh;
697 "#define ENABLE_DEFERED_AO");
699 return e_data.gtao_debug_sh;
714 return e_data.postprocess_sh;
725 const int index = is_hair ? 1 : 0;
742 return e_data.cryptomatte_sh[index];
759 return e_data.reflection_trace;
770 return e_data.reflection_resolve;
794 return e_data.shadow_accum_sh;
845 "#define VOLUMETRICS\n"
848 return e_data.volumetric_clear_sh;
859 "#define VOLUMETRICS\n"
860 "#define VOLUME_SHADOW\n");
874 "#define VOLUMETRICS\n"
875 "#define VOLUME_LIGHTING\n"
876 "#define VOLUME_SHADOW\n");
878 return e_data.scatter_with_lights_sh;
883 if (
e_data.volumetric_integration_sh ==
NULL) {
889 USE_VOLUME_OPTI ?
"#extension GL_ARB_shader_image_load_store: enable\n"
890 "#extension GL_ARB_shading_language_420pack: enable\n"
894 return e_data.volumetric_integration_sh;
899 const int index = accum ? 1 : 0;
900 if (
e_data.volumetric_resolve_sh[index] ==
NULL) {
906 return e_data.volumetric_resolve_sh[index];
915 return e_data.volumetric_accum_sh;
926 return e_data.velocity_resolve_sh;
935 return e_data.update_noise_sh;
941 const char *define =
NULL;
943 sh = &
e_data.taa_resolve_reproject_sh;
944 define =
"#define USE_REPROJECTION\n";
947 sh = &
e_data.taa_resolve_sh;
963 int index = high_quality ? 1 : 0;
966 const char *define = high_quality ?
"#define STEP_BLIT\n"
967 "#define HIGH_QUALITY\n" :
968 "#define STEP_BLIT\n";
972 return e_data.bloom_blit_sh[index];
977 int index = high_quality ? 1 : 0;
979 if (
e_data.bloom_downsample_sh[index] ==
NULL) {
980 const char *define = high_quality ?
"#define STEP_DOWNSAMPLE\n"
981 "#define HIGH_QUALITY\n" :
982 "#define STEP_DOWNSAMPLE\n";
986 return e_data.bloom_downsample_sh[index];
991 int index = high_quality ? 1 : 0;
993 if (
e_data.bloom_upsample_sh[index] ==
NULL) {
994 const char *define = high_quality ?
"#define STEP_UPSAMPLE\n"
995 "#define HIGH_QUALITY\n" :
996 "#define STEP_UPSAMPLE\n";
1000 return e_data.bloom_upsample_sh[index];
1005 int index = high_quality ? 1 : 0;
1007 if (
e_data.bloom_resolve_sh[index] ==
NULL) {
1008 const char *define = high_quality ?
"#define STEP_RESOLVE\n"
1009 "#define HIGH_QUALITY\n" :
1010 "#define STEP_RESOLVE\n";
1014 return e_data.bloom_resolve_sh[index];
1029 return e_data.dof_bokeh_sh;
1038 return e_data.dof_setup_sh;
1047 return e_data.dof_flatten_tiles_sh;
1053 if (
e_data.dof_dilate_tiles_sh[pass] ==
NULL) {
1060 return e_data.dof_dilate_tiles_sh[pass];
1069 return e_data.dof_downsample_sh;
1074 int is_copy_pass = b_is_copy_pass;
1075 if (
e_data.dof_reduce_sh[is_copy_pass] ==
NULL) {
1082 return e_data.dof_reduce_sh[is_copy_pass];
1087 int use_bokeh_tx = b_use_bokeh_tx;
1088 if (
e_data.dof_gather_sh[pass][use_bokeh_tx] ==
NULL) {
1102 "#define DOF_BACKGROUND_PASS\n"
1103 "#define DOF_HOLEFILL_PASS\n");
1121 return e_data.dof_gather_sh[pass][use_bokeh_tx];
1130 return e_data.dof_filter_sh;
1135 int is_foreground = b_is_foreground;
1136 int use_bokeh_tx = b_use_bokeh_tx;
1137 if (
e_data.dof_scatter_sh[is_foreground][use_bokeh_tx] ==
NULL) {
1142 ds, (is_foreground) ?
"#define DOF_FOREGROUND_PASS\n" :
"#define DOF_BACKGROUND_PASS\n");
1160 return e_data.dof_scatter_sh[is_foreground][use_bokeh_tx];
1165 int use_hq_gather = b_use_hq_gather;
1166 int use_bokeh_tx = b_use_bokeh_tx;
1167 if (
e_data.dof_resolve_sh[use_bokeh_tx][use_hq_gather] ==
NULL) {
1177 BLI_dynstr_appendf(ds,
"#define DOF_SLIGHT_FOCUS_DENSITY %d\n", use_hq_gather ? 4 : 2);
1182 e_data.dof_resolve_sh[use_bokeh_tx][use_hq_gather] =
1188 return e_data.dof_resolve_sh[use_bokeh_tx][use_hq_gather];
1195 if (!
e_data.diffuse_mat) {
1217 return e_data.diffuse_mat;
1222 if (!
e_data.glossy_mat) {
1246 return e_data.glossy_mat;
1281 if (!
e_data.surface.ntree) {
1300 e_data.surface.specular_socket->value = ma->
spec;
1302 return e_data.surface.ntree;
1309 if (!
e_data.world.ntree) {
1324 return e_data.world.ntree;
1332 e_data.default_world->use_nodes = 0;
1336 return e_data.default_world;
1433 const char **
UNUSED(vert_code),
1434 const char **geom_code,
1435 const char **
UNUSED(frag_lib),
1436 const char **
UNUSED(defines))
1444 *geom_code ==
NULL) {
1445 *geom_code =
e_data.surface_geom_barycentric;
1480 scene,
ma,
ntree, engine,
options, is_volume, vert, geom, frag, defines, deferred, cbfn);
1485 scene, wo,
ntree, engine,
options, is_volume, vert, geom, frag, defines, deferred,
NULL);
1618 for (
int i = 0; i < 2; i++) {
1628 if (
e_data.default_world) {
1636 if (
e_data.diffuse_mat) {
1644 if (
e_data.surface.ntree) {
1649 if (
e_data.world.ntree) {
void * BKE_id_new_nomain(const short type, const char *name)
void BKE_id_free(struct Main *bmain, void *idv)
struct Material * BKE_material_default_surface(void)
struct Material * BKE_material_default_volume(void)
#define SH_NODE_OUTPUT_WORLD
#define SH_NODE_BSDF_PRINCIPLED
void ntreeFreeEmbeddedTree(struct bNodeTree *ntree)
struct bNodeLink * nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock)
#define SH_NODE_BACKGROUND
struct bNodeSocket * nodeFindSocket(const struct bNode *node, eNodeSocketInOut in_out, const char *identifier)
struct bNodeTree * ntreeAddTree(struct Main *bmain, const char *name, const char *idname)
struct bNode * nodeAddStaticNode(const struct bContext *C, struct bNodeTree *ntree, int type)
void nodeSetActive(struct bNodeTree *ntree, struct bNode *node)
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...) ATTR_PRINTF_FORMAT(2
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE void copy_v3_fl(float r[3], float f)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
#define DRW_SHADER_LIB_FREE_SAFE(lib)
#define DRW_shader_create_fullscreen(frag, defines)
#define DRW_SHADER_LIB_ADD(lib, lib_name)
void(* GPUMaterialEvalCallbackFn)(struct GPUMaterial *mat, int options, const char **vert_code, const char **geom_code, const char **frag_lib, const char **defines)
#define DRW_SHADER_FREE_SAFE(shader)
#define DRW_shader_create_with_shaderlib(vert, geom, frag, lib, defines)
#define DRW_shader_create_fullscreen_with_shaderlib(frag, lib, defines)
@ GPU_MATFLAG_BARYCENTRIC
eGPUMaterialStatus GPU_material_status(GPUMaterial *mat)
bool GPU_material_flag_get(GPUMaterial *mat, eGPUMatFlag flag)
struct GPUShader GPUShader
Read Guarded memory(de)allocation.
struct bNodeTreeType * ntreeType_Shader
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient SH_NODE_BSDF_DIFFUSE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse SH_NODE_BSDF_GLOSSY
Group RGB to Bright Vector Camera Vector Combine SH_NODE_OUTPUT_MATERIAL
CCL_NAMESPACE_BEGIN struct Options options
GPUMaterial * DRW_shader_find_from_material(Material *ma, const void *engine_type, const int options, bool deferred)
GPUMaterial * DRW_shader_create_from_world(struct Scene *scene, World *wo, struct bNodeTree *ntree, const void *engine_type, const int options, const bool is_volume_shader, const char *vert, const char *geom, const char *frag_lib, const char *defines, bool deferred, GPUMaterialEvalCallbackFn callback)
DRWShaderLibrary * DRW_shader_library_create(void)
GPUMaterial * DRW_shader_create_from_material(struct Scene *scene, Material *ma, struct bNodeTree *ntree, const void *engine_type, const int options, const bool is_volume_shader, const char *vert, const char *geom, const char *frag_lib, const char *defines, bool deferred, GPUMaterialEvalCallbackFn callback)
char * DRW_shader_library_create_shader_string(const DRWShaderLibrary *lib, const char *shader_code)
GPUMaterial * DRW_shader_find_from_world(World *wo, const void *engine_type, const int options, bool deferred)
RenderEngineType DRW_engine_viewport_eevee_type
#define DOF_SHADER_DEFINES
char datatoc_lightprobe_cube_display_frag_glsl[]
struct GPUShader * EEVEE_shaders_volumes_clear_sh_get()
GPUShader * EEVEE_shaders_effect_motion_blur_velocity_tiles_sh_get(void)
GPUShader * EEVEE_shaders_probe_planar_display_sh_get(void)
char datatoc_object_motion_vert_glsl[]
char datatoc_btdf_lut_frag_glsl[]
static char * eevee_get_geom(int options)
char datatoc_effect_dof_gather_frag_glsl[]
struct GPUShader * volumetric_clear_sh
GPUShader * EEVEE_shaders_effect_maxz_copydepth_sh_get(void)
char datatoc_lightprobe_grid_display_vert_glsl[]
char datatoc_gpu_shader_common_obinfos_lib_glsl[]
GPUShader * EEVEE_shaders_ggx_refraction_lut_sh_get(void)
char datatoc_lightprobe_grid_display_frag_glsl[]
char datatoc_renderpass_lib_glsl[]
char datatoc_lightprobe_filter_diffuse_frag_glsl[]
struct GPUShader * probe_grid_display_sh
struct GPUShader * maxz_downdepth_sh
void EEVEE_shaders_free(void)
char datatoc_prepass_frag_glsl[]
char datatoc_effect_temporal_aa_glsl[]
struct GPUShader * dof_bokeh_sh
char datatoc_cubemap_lib_glsl[]
struct GPUShader * reflection_trace
char datatoc_volumetric_geom_glsl[]
DRWShaderLibrary * EEVEE_shader_lib_get(void)
char datatoc_closure_type_lib_glsl[]
char datatoc_surface_lib_glsl[]
char datatoc_background_vert_glsl[]
struct GPUShader * dof_downsample_sh
char datatoc_effect_downsample_cube_frag_glsl[]
GPUShader * EEVEE_shaders_effect_motion_blur_hair_sh_get(void)
struct GPUShader * probe_filter_diffuse_sh
GPUShader * EEVEE_shaders_depth_of_field_gather_get(EEVEE_DofGatherPass pass, bool b_use_bokeh_tx)
GPUShader * EEVEE_shaders_effect_motion_blur_object_sh_get(void)
char datatoc_surface_frag_glsl[]
char datatoc_closure_eval_lib_glsl[]
char datatoc_effect_velocity_tile_frag_glsl[]
char datatoc_effect_dof_lib_glsl[]
struct GPUShader * downsample_cube_sh
char datatoc_effect_dof_dilate_tiles_frag_glsl[]
bNodeSocketValueFloat * metallic_socket
GPUShader * EEVEE_shaders_effect_ambient_occlusion_debug_sh_get(void)
static char * eevee_get_defines(int options)
struct GPUShader * EEVEE_shaders_subsurface_second_pass_sh_get()
char datatoc_common_uniforms_lib_glsl[]
char datatoc_bsdf_lut_frag_glsl[]
struct GPUShader * motion_blur_hair_sh
struct GPUShader * taa_resolve_reproject_sh
char datatoc_effect_velocity_resolve_frag_glsl[]
char datatoc_shadow_vert_glsl[]
GPUShader * EEVEE_shaders_bloom_upsample_get(bool high_quality)
char datatoc_effect_gtao_frag_glsl[]
struct GPUShader * bloom_resolve_sh[2]
char datatoc_effect_dof_downsample_frag_glsl[]
char datatoc_cryptomatte_frag_glsl[]
GPUShader * EEVEE_shaders_depth_of_field_setup_get(void)
struct GPUShader * reflection_resolve
char datatoc_ssr_lib_glsl[]
struct GPUShader * velocity_tiles_sh
char datatoc_effect_dof_filter_frag_glsl[]
static void eevee_material_post_eval(GPUMaterial *mat, int options, const char **UNUSED(vert_code), const char **geom_code, const char **UNUSED(frag_lib), const char **UNUSED(defines))
char datatoc_effect_dof_bokeh_frag_glsl[]
char datatoc_irradiance_lib_glsl[]
char datatoc_closure_eval_diffuse_lib_glsl[]
char datatoc_effect_motion_blur_frag_glsl[]
GPUShader * EEVEE_shaders_taa_resolve_sh_get(EEVEE_EffectsFlag enabled_effects)
char datatoc_effect_subsurface_frag_glsl[]
char datatoc_lightprobe_cube_display_vert_glsl[]
struct GPUShader * velocity_tiles_expand_sh
char datatoc_volumetric_resolve_frag_glsl[]
World * EEVEE_world_default_get(void)
GPUShader * EEVEE_shaders_bloom_resolve_get(bool high_quality)
static const char * filter_defines
struct GPUShader * EEVEE_shaders_volumes_scatter_with_lights_sh_get()
GPUShader * EEVEE_shaders_studiolight_background_sh_get(void)
struct GPUShader * minz_downdepth_sh
char datatoc_effect_reflection_lib_glsl[]
char datatoc_common_utiltex_lib_glsl[]
struct GPUShader * update_noise_sh
struct GPUShader * bloom_downsample_sh[2]
GPUShader * EEVEE_shaders_probe_filter_diffuse_sh_get(void)
struct GPUShader * maxz_downdepth_layer_sh
struct GPUShader * dof_gather_sh[DOF_GATHER_MAX_PASS][2]
struct GPUShader * ggx_refraction_lut_sh
GPUShader * EEVEE_shaders_depth_of_field_reduce_get(bool b_is_copy_pass)
struct GPUShader * maxz_copydepth_layer_sh
char datatoc_volumetric_scatter_frag_glsl[]
GPUShader * EEVEE_shaders_bloom_downsample_get(bool high_quality)
GPUShader * EEVEE_shaders_depth_of_field_flatten_tiles_get(void)
struct GPUShader * gtao_debug_sh
struct GPUShader * volumetric_integration_sh
struct GPUShader * shadow_accum_sh
struct GPUShader * bloom_upsample_sh[2]
GPUShader * EEVEE_shaders_effect_downsample_sh_get(void)
GPUShader * EEVEE_shaders_effect_mist_sh_get(void)
char datatoc_prepass_vert_glsl[]
struct GPUShader * gtao_sh
Material * EEVEE_material_default_diffuse_get(void)
struct GPUShader * maxz_downlevel_sh
struct GPUShader * shadow_sh
GPUShader * EEVEE_shaders_effect_minz_downdepth_sh_get(void)
GPUShader * EEVEE_shaders_effect_ambient_occlusion_sh_get(void)
char datatoc_effect_mist_frag_glsl[]
char * surface_geom_barycentric
struct GPUShader * EEVEE_shaders_effect_reflection_trace_sh_get(void)
struct GPUShader * dof_reduce_sh[2]
char datatoc_effect_dof_resolve_frag_glsl[]
static struct @203 e_data
char datatoc_lightprobe_planar_display_vert_glsl[]
GPUShader * EEVEE_shaders_probe_filter_glossy_sh_get(void)
char datatoc_lightprobe_planar_downsample_frag_glsl[]
Material * EEVEE_material_default_glossy_get(void)
struct GPUShader * EEVEE_shaders_effect_reflection_resolve_sh_get(void)
struct GPUShader * EEVEE_shaders_subsurface_translucency_sh_get()
struct GPUShader * dof_dilate_tiles_sh[2]
struct GPUShader * probe_grid_fill_sh
char datatoc_ltc_lib_glsl[]
GPUShader * EEVEE_shaders_effect_maxz_downdepth_layer_sh_get(void)
struct bNodeTree * EEVEE_shader_default_surface_nodetree(Material *ma)
char datatoc_effect_dof_setup_frag_glsl[]
struct GPUShader * cryptomatte_sh[2]
char datatoc_common_hair_lib_glsl[]
char datatoc_surface_vert_glsl[]
char datatoc_lightprobe_filter_visibility_frag_glsl[]
GPUShader * EEVEE_shaders_effect_minz_copydepth_sh_get(void)
GPUShader * EEVEE_shaders_depth_of_field_resolve_get(bool b_use_bokeh_tx, bool b_use_hq_gather)
char datatoc_effect_dof_flatten_tiles_frag_glsl[]
char datatoc_effect_minmaxz_frag_glsl[]
static struct GPUMaterial * eevee_material_get_ex(struct Scene *scene, Material *ma, World *wo, int options, bool deferred)
char datatoc_common_view_lib_glsl[]
struct GPUShader * postprocess_sh
static char * eevee_get_vert(int options)
struct GPUShader * ggx_lut_sh
GPUShader * EEVEE_shaders_effect_maxz_downlevel_sh_get(void)
char datatoc_effect_reflection_trace_frag_glsl[]
char datatoc_lightprobe_planar_downsample_vert_glsl[]
struct GPUShader * gtao_layer_sh
struct GPUMaterial * EEVEE_material_default_get(struct Scene *scene, Material *ma, int options)
char datatoc_default_frag_glsl[]
char datatoc_lightprobe_planar_downsample_geom_glsl[]
char datatoc_update_noise_frag_glsl[]
struct GPUShader * motion_blur_object_sh
struct bNodeTree * EEVEE_shader_default_world_nodetree(World *wo)
struct GPUShader * sss_sh[3]
struct GPUShader * probe_planar_downsample_sh
struct GPUShader * dof_flatten_tiles_sh
char datatoc_effect_dof_scatter_frag_glsl[]
char datatoc_random_lib_glsl[]
char * surface_prepass_frag
GPUShader * EEVEE_shaders_effect_minz_downlevel_sh_get(void)
GPUShader * EEVEE_shaders_probe_cube_display_sh_get(void)
GPUShader * EEVEE_shaders_probe_grid_fill_sh_get(void)
struct GPUShader * mist_sh
static char * eevee_get_frag(int options)
struct GPUShader * studiolight_probe_sh
struct GPUShader * probe_cube_display_sh
char datatoc_common_math_lib_glsl[]
GPUShader * EEVEE_shaders_bloom_blit_get(bool high_quality)
char datatoc_lightprobe_grid_fill_frag_glsl[]
GPUShader * EEVEE_shaders_effect_maxz_copydepth_layer_sh_get(void)
GPUShader * EEVEE_shaders_update_noise_sh_get(void)
GPUShader * EEVEE_shaders_studiolight_probe_sh_get(void)
struct GPUShader * bloom_blit_sh[2]
char datatoc_bsdf_sampling_lib_glsl[]
struct GPUShader * probe_planar_display_sh
struct GPUShader * volumetric_accum_sh
struct GPUShader * minz_downlevel_sh
char datatoc_lightprobe_lib_glsl[]
char datatoc_shadow_frag_glsl[]
GPUShader * EEVEE_shaders_effect_downsample_cube_sh_get(void)
struct GPUShader * EEVEE_shaders_shadow_accum_sh_get()
struct @203::@204 surface
struct GPUShader * EEVEE_shaders_volumes_integration_sh_get()
struct GPUShader * probe_filter_visibility_sh
struct GPUShader * downsample_sh
struct GPUShader * motion_blur_sh
GPUShader * EEVEE_shaders_depth_of_field_bokeh_get(void)
GPUShader * EEVEE_shaders_ggx_lut_sh_get(void)
char datatoc_surface_geom_glsl[]
struct GPUShader * taa_resolve_sh
struct GPUShader * EEVEE_shaders_volumes_accum_sh_get()
struct GPUMaterial * EEVEE_material_get(EEVEE_Data *vedata, struct Scene *scene, Material *ma, World *wo, int options)
bNodeSocketValueFloat * specular_socket
Material * EEVEE_material_default_error_get(void)
struct GPUShader * dof_setup_sh
struct GPUShader * studiolight_background_sh
char datatoc_raytrace_lib_glsl[]
GPUShader * EEVEE_shaders_depth_of_field_filter_get(void)
char datatoc_effect_bloom_frag_glsl[]
char datatoc_closure_eval_translucent_lib_glsl[]
struct GPUShader * EEVEE_shaders_subsurface_first_pass_sh_get()
struct GPUShader * velocity_resolve_sh
char datatoc_octahedron_lib_glsl[]
struct GPUShader * maxz_copydepth_sh
GPUShader * EEVEE_shaders_velocity_resolve_sh_get(void)
GPUShader * EEVEE_shaders_renderpasses_post_process_sh_get(void)
char datatoc_object_motion_frag_glsl[]
GPUShader * EEVEE_shaders_cryptomatte_sh_get(bool is_hair)
char datatoc_bsdf_common_lib_glsl[]
GPUShader * EEVEE_shaders_effect_minz_downdepth_layer_sh_get(void)
bNodeSocketValueRGBA * color_socket
char datatoc_lightprobe_planar_display_frag_glsl[]
char datatoc_lightprobe_filter_glossy_frag_glsl[]
GPUShader * EEVEE_shaders_depth_of_field_dilate_tiles_get(bool b_pass)
GPUShader * EEVEE_shaders_effect_maxz_downdepth_sh_get(void)
GPUShader * EEVEE_shaders_probe_grid_display_sh_get(void)
struct GPUShader * scatter_with_lights_sh
struct GPUShader * EEVEE_shaders_volumes_resolve_sh_get(bool accum)
struct GPUShader * color_copy_sh
GPUShader * EEVEE_shaders_effect_motion_blur_sh_get(void)
struct GPUShader * minz_copydepth_sh
GPUShader * EEVEE_shaders_probe_planar_downsample_sh_get(void)
GPUShader * EEVEE_shaders_effect_color_copy_sh_get(void)
char datatoc_volumetric_integration_frag_glsl[]
struct GPUShader * dof_scatter_sh[2][2]
char datatoc_lookdev_world_frag_glsl[]
char datatoc_lights_lib_glsl[]
struct GPUShader * dof_filter_sh
char datatoc_effect_reflection_resolve_frag_glsl[]
char datatoc_volumetric_frag_glsl[]
char datatoc_volumetric_vert_glsl[]
char datatoc_lightprobe_geom_glsl[]
char datatoc_effect_dof_reduce_frag_glsl[]
struct GPUShader * minz_downdepth_layer_sh
char datatoc_volumetric_accum_frag_glsl[]
bNodeSocketValueFloat * roughness_socket
char datatoc_effect_downsample_frag_glsl[]
struct GPUShader * probe_filter_glossy_sh
char datatoc_ambient_occlusion_lib_glsl[]
char datatoc_shadow_accum_frag_glsl[]
GPUShader * EEVEE_shaders_probe_filter_visibility_sh_get(void)
char datatoc_renderpass_postprocess_frag_glsl[]
struct GPUShader * dof_resolve_sh[2][2]
char datatoc_volumetric_lib_glsl[]
char datatoc_common_math_geom_lib_glsl[]
GPUShader * EEVEE_shaders_depth_of_field_scatter_get(bool b_is_foreground, bool b_use_bokeh_tx)
char datatoc_effect_translucency_frag_glsl[]
struct GPUShader * scatter_sh
void EEVEE_shaders_material_shaders_init(void)
char datatoc_closure_eval_refraction_lib_glsl[]
GPUShader * EEVEE_shaders_depth_of_field_downsample_get(void)
char datatoc_lightprobe_vert_glsl[]
static void eevee_shader_library_ensure(void)
struct GPUShader * volumetric_resolve_sh[2]
struct GPUShader * EEVEE_shaders_shadow_sh_get()
struct GPUShader * EEVEE_shaders_volumes_scatter_sh_get()
GPUShader * EEVEE_shaders_effect_motion_blur_velocity_tiles_expand_sh_get(void)
struct GPUShader * lookdev_background
char datatoc_closure_eval_glossy_lib_glsl[]
char datatoc_effect_dof_scatter_vert_glsl[]
void(* MEM_freeN)(void *vmemh)
static const pxr::TfToken roughness("roughness", pxr::TfToken::Immortal)
struct EEVEE_PrivateData * g_data
eGPUMaterialStatus status
struct bNodeTree * nodetree
struct bNodeTree * nodetree