Differential D16826 Diff 59819 source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/workbench/shaders/workbench_transparent_accum_frag.glsl
| Show All 39 Lines | #else | ||||
| float a = abs(z) / 5.0; | float a = abs(z) / 5.0; | ||||
| float b = abs(z) / 200.0; | float b = abs(z) / 200.0; | ||||
| b *= b; | b *= b; | ||||
| float w = 10.0 / ((1e-5 + a * a) + b * (b * b)); /* Eq 7 */ | float w = 10.0 / ((1e-5 + a * a) + b * (b * b)); /* Eq 7 */ | ||||
| #endif | #endif | ||||
| return clamp(w, 1e-2, 3e2); | return clamp(w, 1e-2, 3e2); | ||||
| } | } | ||||
| #ifdef WORKBENCH_NEXT | |||||
| void main() | void main() | ||||
| { | { | ||||
| /* Normal and Incident vector are in viewspace. Lighting is evaluated in viewspace. */ | /* Normal and Incident vector are in viewspace. Lighting is evaluated in viewspace. */ | ||||
| vec2 uv_viewport = gl_FragCoord.xy * world_data.viewport_size_inv; | vec2 uv_viewport = gl_FragCoord.xy * world_data.viewport_size_inv; | ||||
| vec3 I = get_view_vector_from_screen_uv(uv_viewport); | vec3 I = get_view_vector_from_screen_uv(uv_viewport); | ||||
| vec3 N = normalize(normal_interp); | vec3 N = normalize(normal_interp); | ||||
| vec3 color = color_interp; | vec3 color = color_interp; | ||||
| #ifdef V3D_SHADING_TEXTURE_COLOR | # ifdef WORKBENCH_COLOR_TEXTURE | ||||
| color = workbench_image_color(uv_interp); | color = workbench_image_color(uv_interp); | ||||
| #endif | # endif | ||||
| #ifdef V3D_LIGHTING_MATCAP | # ifdef WORKBENCH_LIGHTING_MATCAP | ||||
| vec3 shaded_color = get_matcap_lighting(matcap_tx, color, N, I); | |||||
| # endif | |||||
| # ifdef WORKBENCH_LIGHTING_STUDIO | |||||
| vec3 shaded_color = get_world_lighting(color, _roughness, metallic, N, I); | |||||
| # endif | |||||
| # ifdef WORKBENCH_LIGHTING_FLAT | |||||
| vec3 shaded_color = color; | |||||
| # endif | |||||
| shaded_color *= get_shadow(N, forceShadowing); | |||||
| /* Listing 4 */ | |||||
| float alpha = alpha_interp * world_data.xray_alpha; | |||||
| float weight = calculate_transparent_weight() * alpha; | |||||
| out_transparent_accum = vec4(shaded_color * weight, alpha); | |||||
| out_revealage_accum = vec4(weight); | |||||
| out_object_id = uint(object_id); | |||||
| } | |||||
| #else | |||||
| void main() | |||||
| { | |||||
| /* Normal and Incident vector are in viewspace. Lighting is evaluated in viewspace. */ | |||||
| vec2 uv_viewport = gl_FragCoord.xy * world_data.viewport_size_inv; | |||||
| vec3 I = get_view_vector_from_screen_uv(uv_viewport); | |||||
| vec3 N = normalize(normal_interp); | |||||
| vec3 color = color_interp; | |||||
| # ifdef WORKBENCH_COLOR_TEXTURE | |||||
| color = workbench_image_color(uv_interp); | |||||
| # endif | |||||
| # ifdef WORKBENCH_LIGHTING_MATCAP | |||||
| vec3 shaded_color = get_matcap_lighting(matcap_diffuse_tx, matcap_specular_tx, color, N, I); | vec3 shaded_color = get_matcap_lighting(matcap_diffuse_tx, matcap_specular_tx, color, N, I); | ||||
| #endif | # endif | ||||
| #ifdef V3D_LIGHTING_STUDIO | # ifdef WORKBENCH_LIGHTING_STUDIO | ||||
| vec3 shaded_color = get_world_lighting(color, _roughness, metallic, N, I); | vec3 shaded_color = get_world_lighting(color, _roughness, metallic, N, I); | ||||
| #endif | # endif | ||||
| #ifdef V3D_LIGHTING_FLAT | # ifdef WORKBENCH_LIGHTING_FLAT | ||||
| vec3 shaded_color = color; | vec3 shaded_color = color; | ||||
| #endif | # endif | ||||
| shaded_color *= get_shadow(N, forceShadowing); | shaded_color *= get_shadow(N, forceShadowing); | ||||
| /* Listing 4 */ | /* Listing 4 */ | ||||
| float weight = calculate_transparent_weight() * alpha_interp; | float weight = calculate_transparent_weight() * alpha_interp; | ||||
| transparentAccum = vec4(shaded_color * weight, alpha_interp); | out_transparent_accum = vec4(shaded_color * weight, alpha_interp); | ||||
| revealageAccum = vec4(weight); | out_revealage_accum = vec4(weight); | ||||
| objectId = uint(object_id); | out_object_id = uint(object_id); | ||||
| } | } | ||||
| #endif | |||||