Question by 
               nitzanwilnai · Oct 04, 2018 at 07:19 AM · 
                shadersmaterialstextures  
              
 
              material.SetTexture not working for mainTexture, works for others
I am running into a weird issue where, if I try to set my main texture to a new texture, it does not change. If I set a secondary texture, it does change.
The code setting the textures for the shader:
         spriteRenderer.material.SetTexture("_SecondaryTexture", fishTexture); // <- changes texture
         spriteRenderer.material.SetTexture("_MainTex", fishTexture); // <- texture does not change!
 
_SecondaryTexture changes correctly.
_MainTex remains the same.
The shader code:
 Shader "Unlit/TestShader"
 {
     Properties
     {
         // we have removed support for texture tiling/offset,
         // so make them not be displayed in material inspector
         [NoScaleOffset] _MainTex ("Texture", 2D) = "white" {}
         [NoScaleOffset] _SecondaryTexture ("Texture", 2D) = "white" {}
     }
     SubShader
     {
         Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
         LOD 100
 
         ZWrite Off
         Cull Off
         Blend SrcAlpha OneMinusSrcAlpha 
 
         Pass
         {
             CGPROGRAM
             // use "vert" function as the vertex shader
             #pragma vertex vert
             // use "frag" function as the pixel (fragment) shader
             #pragma fragment frag
 
              #include "UnityCG.cginc"
 
             // vertex shader inputs
             struct appdata
             {
                 float4 vertex : POSITION; // vertex position
                 float2 texcoord : TEXCOORD0; // texture coordinate
             };
 
             // vertex shader outputs ("vertex to fragment")
             struct v2f
             {
                 float4 vertex : SV_POSITION; // clip space position
                 half2 texcoord : TEXCOORD0; // texture coordinate
             };
 
             // texture we will sample
             sampler2D _MainTex;
             sampler2D _SecondaryTexture;
 
             float4 _MainTex_ST;
             float4 _MainTex_TexelSize;
 
             float4 _SecondaryTexture_ST;
             float4 _SecondaryTexture_TexelSize;
 
             // vertex shader
             v2f vert (appdata v)
             {
                  v2f o;
                  o.vertex = UnityObjectToClipPos(v.vertex);
                  o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                  return o;
             }
 
             // pixel shader; returns low precision ("fixed4" type)
             // color ("SV_Target" semantic)
             fixed4 frag (v2f pix) : SV_Target
             {
                 // sample texture and return it
                 fixed4 col = tex2D(_MainTex, pix.texcoord);
                 //fixed4 col = tex2D(_SecondaryTexture, pix.texcoord);
                 return col;
             }
             ENDCG
         }
 
     }
 }
 
Anyone have any ideas why I cannot set the main texture?
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                