Fog に対応させる
https://gyazo.com/02e9ddea441bc14e77cbef9dea4b1d9f
Unity: 2023.1
pragma directive
code:hlsl
https://gyazo.com/9b6191b4d46276c32cc6d3cd90eff18c https://gyazo.com/8eb380271189da79b09ea89c2e2d3fc2
上記3つのキーワードが追加される, これはそれぞれ Lighting Settings から設定できる Fog Mode に対応している
Vert & Frag
code:hlsl
struct Varyings
{
float4 positionCS : SV_POSITION;
half fogFactor : TEXCOORD0; // Add
};
Varyings に fogFactor を追加
code:hlsl
Varyings vert(Attributes input)
{
Varyings output;
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
output.fogFactor = ComputeFogFactor(output.positionCS.z); // Add
return output;
}
Vertex shader で fogFactor を positionCS.z から計算する (ComputeFogFactor 関数)
code:hlsl
void frag(Varyings input, out half4 outColor : SV_Target0)
{
outColor.rgb = float3(0.15, 0.15, 0.15);
outColor.rgb = MixFog(outColor.rgb, input.fogFactor); // Add
outColor.a = 1.0;
}
Fragment shader でベースの色に対して Fog の色を乗せる (MixFog 関数)