Question by
unity_51HJ2jkrzmHJdQ · Jan 17, 2018 at 05:17 PM ·
shaderpixelcolor change
Shader for pixel colour just based on z position
I have to colour each object pixels using just the z position of the pixel. I have found this implementation.
Shader "Unlit/test"
{
Properties {
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_ColorTop ("Top Color", Color) = (1,1,1,1)
_ColorMid ("Mid Color", Color) = (1,1,1,1)
_ColorBot ("Bot Color", Color) = (1,1,1,1)
_Middle ("Middle", Range(0.001, 0.999)) = 1
}
SubShader {
Tags {"Queue"="Background" "IgnoreProjector"="True"}
LOD 100
ZWrite On
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
fixed4 _ColorTop;
fixed4 _ColorMid;
fixed4 _ColorBot;
float _Middle;
struct v2f {
float4 pos : SV_POSITION;
float4 texcoord : TEXCOORD0;
};
v2f vert (appdata_full v) {
v2f o;
o.pos = UnityObjectToClipPos (v.vertex);
o.texcoord = v.texcoord;
return o;
}
fixed4 frag (v2f i) : COLOR {
fixed4 c = lerp(_ColorBot, _ColorMid, i.texcoord.y / _Middle) * step(i.texcoord.y, _Middle);
c += lerp(_ColorMid, _ColorTop, (i.texcoord.z - _Middle) / (1 - _Middle)) * step(_Middle, i.texcoord.y);
c.a = 1;
return c;
}
ENDCG
}
}
}
But when the object is not a plane object the result is not what I want. Can you help me please?
screen-shot-2018-01-17-at-181603.png
(256.5 kB)
Comment
Your answer

Follow this Question
Related Questions
How to make RANDOM COLOR on shader 1 Answer
How to Change the Shader Color? 0 Answers
How to change parts of an objects color through scripting? 0 Answers
Changing color in in runtime to a cube 0 Answers
Need help to make a color replace shader 0 Answers