tu peux tout faire dans le premier et virer le second.
Tu définis ta couleur en début (ça c'est bon avec _Color)
Tu dois "l'instancier" (je ne connais pas le terme) comme tu le fais avec les sampler2D et float4x4.
Puis tu dois l'utiliser dans le Fragment Shader.
J'ai pas compris pourquoi tu as 2 textures par contre.
Code : Tout sélectionner
Shader "EmileF/RotatingTexture"
{
Properties
{
_MainTex("Main Texture", 2D) = "white"{}
_MainTexRot("Base (RGB)", 2D) = "white" {}
_Color("Tint Color", Color) = (1,1,1,1)
}
SubShader // Rotation
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct v2f
{
float2 uv : TEXCOORD0;
float4 pos : SV_POSITION;
};
float4x4 _TextureRotation;
float4 _Color;
sampler2D _MainTexRot;
sampler2D _MainTex;
v2f vert(float4 pos : POSITION, float2 uv : TEXCOORD0)
{
v2f o;
o.pos = UnityObjectToClipPos(pos);
o.uv = mul(_TextureRotation, float4(uv,0,1)).xy;
return o;
}
//Ici tu fais tes calculs pour renvoyer une couleur finale
//La je multiplie la texture tournée avec la couleur (du coup je n'utilise pas _MainTex)
fixed4 frag(v2f i) : SV_Target
{
return tex2D(_MainTexRot, i.uv) * _Color;
}
ENDCG
}
}
}
Tu peux changer le chemin du shader en l'écrivant: Ici il sera sous EmileF/RotatingTexture