rj-action-library/Runtime/Rendering/Compositor/CompositorEffects/DepthView/DepthViewShader.glsl

48 lines
1.0 KiB
Plaintext
Raw Normal View History

2025-04-23 12:00:43 +00:00
#[compute]
#version 450
layout( local_size_x = 8, local_size_y = 8, local_size_z = 1 ) in;
layout( rgba16f, set = 0, binding = 0)
uniform image2D color_image;
layout( set = 1, binding = 0)
uniform sampler2D depth_sampler;
layout(push_constant, std430)
uniform Params
{
vec2 raster_size;
vec2 amounts;
float power;
} params;
float sample_depth( ivec2 coord )
{
coord = clamp( coord, ivec2( 0 ), ivec2( params.raster_size ) - ivec2( 1 ) );
vec2 uv = ( vec2( coord ) + 0.5 ) / params.raster_size;
return texture( depth_sampler, uv ).r;
}
void main()
{
ivec2 uv = ivec2( gl_GlobalInvocationID.xy );
ivec2 size = ivec2( params.raster_size );
if ( uv.x >= size.x || uv.y >= size.y )
{
return;
}
vec4 color = imageLoad( color_image, uv );
float depth = sample_depth( uv );
float gray = color.r * 0.2125 + color.g * 0.7154 + color.b * 0.0721;
color.rgb = vec3( params.amounts.x * gray, pow( params.amounts.y * depth, params.power ), 0.0 );
imageStore( color_image, uv, color );
}