- Home /
Shader Replacement not working with a very simple shader.
Hey guys, I must admit that I'm a bit of a beginner at both c# and shaders so there could easily be a very simple solution to this problem.
I'm trying to get shader replacement to work properly on a camera. On my camera I have a shader replacement script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteInEditMode]
public class ShaderReplacement : MonoBehaviour {
public Shader ReplacementShader;
void OnEnable () {
if (ReplacementShader != null)
GetComponent<Camera> ().SetReplacementShader (ReplacementShader, "RenderType");
}
void OnDisable (){
GetComponent<Camera> ().ResetReplacementShader ();
}
}
My shader is a very simple unlit textured shader:
Shader "Custom/UnlitTexture" {
Properties{
_FalloffTex("Falloff" , 2D) = "white" {}
}
Subshader {
Tags{
"RenderType"="Opaque"
}
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
struct VertInput{
float4 pos: POSITION;
float2 uv : TEXCOORD0;
};
sampler2D _FalloffTex;
float4 _FalloffTex_ST;
struct VertOutput {
float4 pos : SV_POSITION;
float2 uv : TEXCOORD0;
};
VertOutput vert(VertInput i) {
VertOutput o;
o.pos = UnityObjectToClipPos(i.pos);
o.uv = TRANSFORM_TEX(i.uv, _FalloffTex);
return o;
}
half4 frag(VertOutput i) : COLOR{
return tex2D(_FalloffTex,i.uv);
}
ENDCG
}
}
}
The expected result from enabling the shader replacement script should be that all the objects in the scene are rendered with an unlit white color (the default color in the shader, as they won't have a Falloff texture). What actually happens is that every object in the scene is rendered as a unlit grey color. I can't really figure out exactly what's going wrong but from some other tests it does seem as though the shader isn't properly being replaced.
Any help would be amazing, thanks for reading!