[Bf-blender-cvs] [513b4b44239] principled-v2: Rework temporary Eevee fix
Lukas Stockner
noreply at git.blender.org
Sun Oct 30 16:35:31 CET 2022
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)
More information about the Bf-blender-cvs
mailing list