diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-05-12 15:39:30 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-05-13 16:56:11 +0300 |
commit | 8f71a84496a95528303fbe0bb7c1406060353425 (patch) | |
tree | ebebb3cb4dd35b83a7f4aba960f616fffdc36800 /source/blender/gpu | |
parent | 21854575a4ede7d0c16fbe31ac90e66493f607fe (diff) |
Cycles/Eevee: add Emission and Alpha inputs to Principled BSDF
This makes it easier to set up materials with emission and transparency.
Importers/exporters and add-ons are recommended to now use these rather than
creating separate transparent BSDF and emission nodes.
Diffstat (limited to 'source/blender/gpu')
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_material.glsl | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/gpu_shader_material.glsl b/source/blender/gpu/shaders/gpu_shader_material.glsl index 5596940cbf6..768f5ddb057 100644 --- a/source/blender/gpu/shaders/gpu_shader_material.glsl +++ b/source/blender/gpu/shaders/gpu_shader_material.glsl @@ -1242,6 +1242,8 @@ void node_bsdf_principled(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1321,6 +1323,8 @@ void node_bsdf_principled(vec4 base_color, # endif result.sss_data.rgb *= (1.0 - transmission); # endif + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_principled_dielectric(vec4 base_color, @@ -1340,6 +1344,8 @@ void node_bsdf_principled_dielectric(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1369,6 +1375,8 @@ void node_bsdf_principled_dielectric(vec4 base_color, result.ssr_data = vec4(ssr_spec, roughness); result.ssr_normal = normal_encode(vN, viewCameraVec); result.ssr_id = int(ssr_id); + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_principled_metallic(vec4 base_color, @@ -1388,6 +1396,8 @@ void node_bsdf_principled_metallic(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1408,6 +1418,8 @@ void node_bsdf_principled_metallic(vec4 base_color, result.ssr_data = vec4(ssr_spec, roughness); result.ssr_normal = normal_encode(vN, viewCameraVec); result.ssr_id = int(ssr_id); + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_principled_clearcoat(vec4 base_color, @@ -1427,6 +1439,8 @@ void node_bsdf_principled_clearcoat(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1456,6 +1470,8 @@ void node_bsdf_principled_clearcoat(vec4 base_color, result.ssr_data = vec4(ssr_spec, roughness); result.ssr_normal = normal_encode(vN, viewCameraVec); result.ssr_id = int(ssr_id); + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_principled_subsurface(vec4 base_color, @@ -1475,6 +1491,8 @@ void node_bsdf_principled_subsurface(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1529,6 +1547,8 @@ void node_bsdf_principled_subsurface(vec4 base_color, result.radiance += (out_diff + out_trans) * mixed_ss_base_color; # endif result.radiance += out_diff * out_sheen; + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_principled_glass(vec4 base_color, @@ -1548,6 +1568,8 @@ void node_bsdf_principled_glass(vec4 base_color, float ior, float transmission, float transmission_roughness, + vec4 emission, + float alpha, vec3 N, vec3 CN, vec3 T, @@ -1582,6 +1604,8 @@ void node_bsdf_principled_glass(vec4 base_color, result.ssr_data = vec4(ssr_spec, roughness); result.ssr_normal = normal_encode(vN, viewCameraVec); result.ssr_id = int(ssr_id); + result.radiance += emission.rgb; + result.opacity = alpha; } void node_bsdf_translucent(vec4 color, vec3 N, out Closure result) |