Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-12 15:39:30 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-05-13 16:56:11 +0300
commit8f71a84496a95528303fbe0bb7c1406060353425 (patch)
treeebebb3cb4dd35b83a7f4aba960f616fffdc36800 /source/blender/gpu
parent21854575a4ede7d0c16fbe31ac90e66493f607fe (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.glsl24
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)