Показать сообщение отдельно
Старый 06.01.2018, 18:16   #1
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Аналог стандартного Terrain шейдера

Взял за основу FourSplit и хотелось бы чтобы все 4 слоя поддерживали Tiling и Offset. Собственно сам шейдер:

     SubShader {
         Tags { "RenderType"="Opaque" }
         LOD 200
         
         CGPROGRAM
         // Physically based Standard lighting model, and enable shadows on all light types
         #pragma surface surf Standard
 
         // Use shader model 3.0 target, to get nicer looking lighting
         #pragma target 2.0
 
         sampler2D _TileTextureR;
         sampler2D _TileTextureG;
         sampler2D _TileTextureB;
         sampler2D _TileTextureA;
         sampler2D _BlendTex;
 
         struct Input {
             float2 uv_TileTextureR;
             float2 uv_TileTextureG;
             float2 uv_TileTextureB;
             float2 uv_TileTextureA;
             float2 uv_BlendTex;
         }; 
 
         void surf (Input IN, inout SurfaceOutputStandard o) 
         {
             fixed4 blend = tex2D(_BlendTex, IN.uv_BlendTex); 
             fixed4 c = 
                 tex2D(_TileTextureR, IN.uv_TileTextureR) * blend.r + 
                 tex2D(_TileTextureG, IN.uv_TileTextureG) * blend.g + 
                 tex2D(_TileTextureB, IN.uv_TileTextureB) * blend.b + 
                 tex2D(_TileTextureA, IN.uv_TileTextureB) * abs(1 - blend.a);
             o.Albedo = c.rgb;
         }
         ENDCG
     }
Стоит заменить

tex2D(_TileTextureA, IN.uv_TileTextureB) * abs(1 - blend.a);
на

tex2D(_TileTextureA, IN.uv_TileTextureA) * abs(1 - blend.a);
Выходит ошибка:
"Too many texture interpolations ... (11 out of max 10)"

В шейдерах не силен, что в коде нужно исправить, чтобы обойти это ограничение?
(Offline)
 
Ответить с цитированием