以下為時時拍射場景高度比的例子:
- 定義ShaderFeature:
#pragma shader_feature CAPTURE_HEIGHT_RATIO - 如果是CAPTURE_HEIGHT_RATIO,才加入高度比的輸出參數:
struct VertexOutput
{
#ifdef CAPTURE_HEIGHT_RATIO
float heightRatio : TEXCOORD0;
#endif
...
} - 如果是CAPTURE_HEIGHT_RATIO,才計算並傳入到output
#ifdef CAPTURE_HEIGHT_RATIO
output.heightRatio =
GetHeightRatio(worldPosition.y);
#endif - 如果是CAPTURE_HEIGHT_RATIO,回傳顏色為高度比
#ifdef CAPTURE_HEIGHT_RATIO
return half4(input.heightRatio, 0.0, 0.0, 1.0);
#endif - 最後是C#的部份,拍高度的Camera在拍之前,把Keyworld enable起來,拍完後,就設回disable:
Shader.EnableKeyword("CAPTURE_HEIGHT_RATIO");
UniversalRenderPipeline.RenderSingleCamera(context, m_captureCamera);
Shader.DisableKeyword("CAPTURE_HEIGHT_RATIO");
沒有留言:
張貼留言