Differential D16243 Diff 58431 source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/eevee/shaders/effect_subsurface_frag.glsl
| #pragma BLENDER_REQUIRE(common_view_lib.glsl) | #pragma BLENDER_REQUIRE(common_view_lib.glsl) | ||||
| #pragma BLENDER_REQUIRE(common_math_lib.glsl) | #pragma BLENDER_REQUIRE(common_math_lib.glsl) | ||||
| #pragma BLENDER_REQUIRE(common_utiltex_lib.glsl) | #pragma BLENDER_REQUIRE(common_utiltex_lib.glsl) | ||||
| #pragma BLENDER_REQUIRE(common_uniforms_lib.glsl) | #pragma BLENDER_REQUIRE(common_uniforms_lib.glsl) | ||||
| /* Based on Separable SSS. by Jorge Jimenez and Diego Gutierrez */ | /* Based on Separable SSS. by Jorge Jimenez and Diego Gutierrez */ | ||||
| #define MAX_SSS_SAMPLES 65 | |||||
| layout(std140) uniform sssProfile | |||||
| { | |||||
| vec4 sss_kernel[MAX_SSS_SAMPLES]; | |||||
| vec4 radii_max_radius; | |||||
| float avg_inv_radius; | |||||
| int sss_samples; | |||||
| }; | |||||
| uniform sampler2D depthBuffer; | |||||
| uniform sampler2D sssIrradiance; | |||||
| uniform sampler2D sssRadius; | |||||
| uniform sampler2D sssAlbedo; | |||||
| layout(location = 0) out vec4 sssRadiance; | |||||
| void main(void) | void main(void) | ||||
| { | { | ||||
| vec2 pixel_size = 1.0 / vec2(textureSize(depthBuffer, 0).xy); /* TODO: precompute. */ | vec2 pixel_size = 1.0 / vec2(textureSize(depthBuffer, 0).xy); /* TODO: precompute. */ | ||||
| vec2 uvs = gl_FragCoord.xy * pixel_size; | vec2 uvs = gl_FragCoord.xy * pixel_size; | ||||
| vec3 sss_irradiance = texture(sssIrradiance, uvs).rgb; | vec3 sss_irradiance = texture(sssIrradiance, uvs).rgb; | ||||
| float sss_radius = texture(sssRadius, uvs).r * radii_max_radius.w * avg_inv_radius; | float sss_radius = texture(sssRadius, uvs).r * radii_max_radius.w * avg_inv_radius; | ||||
| float depth = texture(depthBuffer, uvs).r; | float depth = texture(depthBuffer, uvs).r; | ||||
| float depth_view = get_view_z_from_depth(depth); | float depth_view = get_view_z_from_depth(depth); | ||||
| ▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines | |||||