您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
58 行
1.9 KiB
58 行
1.9 KiB
Shader "Hidden/HDRenderLoop/PreIntegratedFGD"
|
|
{
|
|
SubShader {
|
|
Pass {
|
|
ZTest Always Cull Off ZWrite Off
|
|
|
|
HLSLPROGRAM
|
|
#pragma vertex Vert
|
|
#pragma fragment Frag
|
|
#pragma target 5.0
|
|
#pragma only_renderers d3d11 // TEMP: unitl we go futher in dev
|
|
|
|
#include "Common.hlsl"
|
|
#include "ImageBasedLighting.hlsl"
|
|
#include "Assets/ScriptableRenderLoop/HDRenderLoop/ShaderVariables.hlsl"
|
|
|
|
|
|
struct Attributes
|
|
{
|
|
float3 vertex : POSITION;
|
|
float2 texcoord : TEXCOORD0;
|
|
};
|
|
|
|
struct Varyings
|
|
{
|
|
float4 vertex : SV_POSITION;
|
|
float2 texcoord : TEXCOORD0;
|
|
};
|
|
|
|
Varyings Vert(Attributes input)
|
|
{
|
|
Varyings output;
|
|
output.vertex = TransformWorldToHClip(input.vertex);
|
|
output.texcoord = input.texcoord.xy;
|
|
return output;
|
|
}
|
|
|
|
float4 Frag(Varyings input) : SV_Target
|
|
{
|
|
// These coordinate sampling must match the decoding in GetPreIntegratedDFG in lit.hlsl, i.e here we use perceptualRoughness, must be the same in shader
|
|
float NdotV = input.texcoord.x;
|
|
float perceptualRoughness = input.texcoord.y;
|
|
float3 V = float3(sqrt(1 - NdotV * NdotV), 0, NdotV);
|
|
float3 N = float3(0.0, 0.0, 1.0);
|
|
|
|
const int numSamples = 2048;
|
|
|
|
// Pre integrate GGX with smithJoint visibility as well as DisneyDiffuse
|
|
float4 preFGD = IntegrateGGXAndDisneyFGD(V, N, PerceptualRoughnessToRoughness(perceptualRoughness), numSamples);
|
|
|
|
return float4(preFGD.xyz, 1.0);
|
|
}
|
|
|
|
ENDHLSL
|
|
}
|
|
}
|
|
Fallback Off
|
|
}
|