26 lines
815 B
GLSL
26 lines
815 B
GLSL
|
|
// Copyright 2020 Google LLC
|
||
|
|
|
||
|
|
Texture2D texturePosition : register(t1);
|
||
|
|
SamplerState samplerPosition : register(s1);
|
||
|
|
Texture2D textureNormal : register(t2);
|
||
|
|
SamplerState samplerNormal : register(s2);
|
||
|
|
Texture2D textureAlbedo : register(t3);
|
||
|
|
SamplerState samplerAlbedo : register(s3);
|
||
|
|
Texture2DArray textureDepth : register(t5);
|
||
|
|
SamplerState samplerDepth : register(s5);
|
||
|
|
|
||
|
|
float LinearizeDepth(float depth)
|
||
|
|
{
|
||
|
|
float n = 0.1; // camera z near
|
||
|
|
float f = 64.0; // camera z far
|
||
|
|
float z = depth;
|
||
|
|
return (2.0 * n) / (f + n - z * (f - n));
|
||
|
|
}
|
||
|
|
|
||
|
|
float4 main([[vk::location(0)]] float3 inUV : TEXCOORD0) : SV_TARGET
|
||
|
|
{
|
||
|
|
// Display depth from light's point-of-view
|
||
|
|
// inUV.w = number of light source
|
||
|
|
float depth = textureDepth.Sample(samplerDepth, float3(inUV)).r;
|
||
|
|
return float4((1.0 - LinearizeDepth(depth)).xxx, 0.0);
|
||
|
|
}
|