- Home /
Question by
Hypnotoad0 · Sep 20, 2015 at 04:42 PM ·
shadertexturespriteuvtexturecoord
Accessing a second texture's offset in a modified sprite shader
Im a complete noob when it comes to shaders. Ive been trying to make an overlay shader for my weapon sprites (so I can add cool animated effects like lightning and fire to them).
This is a modified version of the default shader that I came up with:
Shader "Sprites/Overlay"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_OverlayTex("Overlay Texture", 2D) = "white" {}
_Color("Tint", Color) = (1,1,1,1)
[MaterialToggle] PixelSnap("Pixel snap", Float) = 0
}
SubShader
{
Tags
{
"Queue" = "Transparent"
"IgnoreProjector" = "True"
"RenderType" = "Transparent"
"PreviewType" = "Plane"
"CanUseSpriteAtlas" = "True"
}
Cull Off
Lighting Off
ZWrite Off
Blend One OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile _ PIXELSNAP_ON
#include "UnityCG.cginc"
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
};
fixed4 _Color;
v2f vert(appdata_t IN)
{
v2f OUT;
OUT.vertex = mul(UNITY_MATRIX_MVP, IN.vertex);
OUT.texcoord = IN.texcoord;
OUT.color = IN.color * _Color;
#ifdef PIXELSNAP_ON
OUT.vertex = UnityPixelSnap(OUT.vertex);
#endif
return OUT;
}
sampler2D _MainTex;
sampler2D _OverlayTex;
sampler2D _AlphaTex;
float _AlphaSplitEnabled;
fixed4 SampleSpriteTexture(float2 uv)
{
fixed4 color = tex2D(_MainTex, uv);
fixed4 overlayColor = tex2D(_OverlayTex, uv);
color.rgb *= overlayColor.rgb;
if (_AlphaSplitEnabled)
color.a = tex2D(_AlphaTex, uv).r;
return color;
}
fixed4 frag(v2f IN) : SV_Target
{
fixed4 c = SampleSpriteTexture(IN.texcoord) * IN.color;
c.rgb *= c.a;
return c;
}
ENDCG
}
}
}
How the hell do I access the overlay texture's offset and tiling? Im assuming I have to use a second UV, but I have no idea how to do that. This is probably very simple but Im banging my head against the wall over here
Comment
Your answer
Follow this Question
Related Questions
Assigning UV Map to model at runtime 0 Answers
Sprite shader relative UV's 0 Answers
Are shaders more efficient than manual pixel replacement? 0 Answers
Shifting Texture Coordinates via CG Shader 1 Answer
Sprite obstruction transparent area 1 Answer