RenderWithShader result is all black
I am trying to render a RenderTexture with a custom shader in order to get the height of the terrain. The camera is disabled and in ortographic mode above the scene looking down, calling it either in the editor or during play mode gives me an all black texture.
public void Redraw(){
heightCamera.RenderWithShader(heightShader, "");
}
I also tried it with a simple custom all white diffuse texture, which worked as expected, and applying the height shader to a material and attaching it to the terrain also gives the expected result.
Shader "Custom/HeightMapShader"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_HeightMin ("Height Min", Float) = 0
_HeightMax ("Height Max", Float) = 400
_ColorMin ("Color At Min", Color) = (0,0,0,1)
_ColorMax ("Color At Max", Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
CGPROGRAM
#pragma surface surf Lambert
fixed4 _ColorMin;
fixed4 _ColorMax;
float _HeightMin;
float _HeightMax;
struct Input
{
float3 worldPos;
};
void surf (Input IN, inout SurfaceOutput o)
{
float h = (_HeightMax-IN.worldPos.y) / (_HeightMax-_HeightMin);
fixed4 tintColor = lerp(_ColorMax.rgba, _ColorMin.rgba, h);
o.Emission = tintColor.rgb;
}
ENDCG
}
Fallback "Diffuse"
}
Your answer
Follow this Question
Related Questions
Vertex shader/ fragement shader - UnityObjectToClipPos () pb with HTC VIVE 0 Answers
How to make dynamic ripple with shader? 0 Answers
PostProcess Outline Shader GVR alignment 0 Answers
Correct way to modify a Texture2d with a shader? 0 Answers
Transparent plane with RenderTexture - no show shadows? 3 Answers