Commit: 513b4b44239b98f274e62e5941b18eddad36995e Author: Lukas Stockner Date: Sun Oct 30 15:08:00 2022 +0100 Branches: principled-v2 https://developer.blender.org/rB513b4b44239b98f274e62e5941b18eddad36995e
Rework temporary Eevee fix =================================================================== M source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl M source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc =================================================================== diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl index 8f91ded3f82..0833809cc42 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl @@ -15,13 +15,11 @@ float principled_sheen(float NV) void node_bsdf_principled(vec4 base_color, float subsurface, - float subsurface_scale_TODO, vec3 subsurface_radius, vec4 subsurface_color, float subsurface_ior, float subsurface_anisotropy, float metallic, - vec4 metallic_edge_TODO, float specular, float specular_tint, float roughness, @@ -29,12 +27,8 @@ void node_bsdf_principled(vec4 base_color, float anisotropic_rotation, float sheen, float sheen_tint, - float sheen_roughness_TODO, float clearcoat, float clearcoat_roughness, - vec4 clearcoat_tint_TODO, - float thin_film_thickness_TODO, - float thin_film_ior_TODO, float ior, float transmission, float transmission_roughness, @@ -47,15 +41,11 @@ void node_bsdf_principled(vec4 base_color, float weight, const float do_diffuse, const float do_clearcoat, - // const float do_refraction, - // const float do_multiscatter, + const float do_refraction, + const float do_multiscatter, float do_sss, out Closure result) { - // TODO: Disabled because of GLSL argument limit - float do_multiscatter = 0.0f; - float do_refraction = 0.0f; - /* Match cycles. */ metallic = clamp(metallic, 0.0, 1.0); transmission = clamp(transmission, 0.0, 1.0) * (1.0 - metallic); diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc index ad0b545aabf..13165bf11be 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.cc @@ -149,30 +149,37 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat, GPUNodeStack *in, GPUNodeStack *out) { + in[2].type = GPU_NONE; + in[8].type = GPU_NONE; + in[16].type = GPU_NONE; + in[19].type = GPU_NONE; + in[20].type = GPU_NONE; + in[21].type = GPU_NONE; + /* Normals */ - if (!in[22].link) { - GPU_link(mat, "world_normals_get", &in[22].link); + if (!in[28].link) { + GPU_link(mat, "world_normals_get", &in[28].link); } /* Clearcoat Normals */ - if (!in[23].link) { - GPU_link(mat, "world_normals_get", &in[23].link); + if (!in[29].link) { + GPU_link(mat, "world_normals_get", &in[29].link); } #if 0 /* Not used at the moment. */ /* Tangents */ - if (!in[24].link) { + if (!in[30].link) { GPUNodeLink *orco = GPU_attribute(CD_ORCO, ""); - GPU_link(mat, "tangent_orco_z", orco, &in[24].link); - GPU_link(mat, "node_tangent", in[24].link, &in[24].link); + GPU_link(mat, "tangent_orco_z", orco, &in[30].link); + GPU_link(mat, "node_tangent", in[30].link, &in[30].link); } #endif - bool use_diffuse = socket_not_one(6) && socket_not_one(17); + bool use_diffuse = socket_not_one(7) && socket_not_one(23); bool use_subsurf = socket_not_zero(1) && use_diffuse; - bool use_refract = socket_not_one(6) && socket_not_zero(17); - bool use_transparency = socket_not_one(21); - bool use_clear = socket_not_zero(14); + bool use_refract = socket_not_one(7) && socket_not_zero(23); + bool use_transparency = socket_not_one(27); + bool use_clear = socket_not_zero(17); eGPUMaterialFlag flag = GPU_MATFLAG_GLOSSY; if (use_diffuse) { @@ -224,17 +231,16 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat, GPU_material_flag_set(mat, flag); - return GPU_stack_link( - mat, - node, - "node_bsdf_principled", - in, - out, - GPU_constant(&use_diffuse_f), - GPU_constant(&use_clear_f), - // GPU_constant(&use_refract_f), - // GPU_constant(&use_multi_scatter), // TODO: Disabled because of GLSL argument limit - GPU_uniform(&use_sss)); + return GPU_stack_link(mat, + node, + "node_bsdf_principled", + in, + out, + GPU_constant(&use_diffuse_f), + GPU_constant(&use_clear_f), + GPU_constant(&use_refract_f), + GPU_constant(&use_multi_scatter), + GPU_uniform(&use_sss)); } static void node_shader_update_principled(bNodeTree *ntree, bNode *node) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs