Показать сообщение отдельно
Старый 13.05.2014, 02:45   #4
Кирпи4
Социал-сычевист
 
Аватар для Кирпи4
 
Регистрация: 24.06.2011
Сообщений: 611
Написано 342 полезных сообщений
(для 1,359 пользователей)
Ответ: [Android] PowerVR и GUI-текстура

Базарю - проблема оказалась гораздо глубже: в шейдере чанков. Артефакты начинаются только там, где пиксели интерфейса пересекают пиксели чанков. Правда вот беда - не знаю как исправить шейдер. Пишет что количество временных регистров 8 превышено, требуется 9 регистров (в районе 10 линии). Вот листинг шейдера:

Shader "Custom/Terrain" {
	Properties {
		_GrassTex ("Grass (RGB)", 2D) = "white" {}
		_MidTex ("Middle (RGB)", 2D) = "white" {}
		_RockTex ("Rock (RGB)", 2D) = "white" {}
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Lambert

		sampler2D _GrassTex;
		sampler2D _MidTex;
		sampler2D _RockTex;

		struct Input {
			float2 uv_GrassTex;
			float2 uv_MidTex;
			float2 uv_RockTex;
			
			float3 worldPos;
		};
		
		
		void surf (Input IN, inout SurfaceOutput o) {
			float delta;
			float hght = (IN.worldPos.y+1.5)/3.0;
			if(hght>0.7){
				delta = (clamp(hght,0.7,1.0)-0.7)/0.2;
				o.Albedo = (tex2D(_RockTex,IN.uv_RockTex)*delta + tex2D(_MidTex,IN.uv_MidTex)*(1.0-delta)).rgb;
			}else if(hght<0.2){
				delta = clamp(hght,0.0,0.2)/0.2;
				o.Albedo = (tex2D(_MidTex,IN.uv_MidTex)*delta + tex2D(_GrassTex,IN.uv_GrassTex)*(1.0-delta)).rgb;
			}else{
				o.Albedo = (tex2D(_MidTex,IN.uv_MidTex)).rgb;
			}
			o.Alpha = 1.0;
		}
		ENDCG
	} 
	FallBack "Mobile/Diffuse"
}
__________________


(Offline)
 
Ответить с цитированием