Тема: Странное.
Показать сообщение отдельно
Старый 22.10.2011, 12:54   #157
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

if(y>=15&&y<=80)return tex2D(s1,tc*20);
if(y<-20) return tex2D(s5,tc*20);
if(y<0) return fAlpha(tex2D(s3,tc*20),tex2D(s5,tc*20),(-y)/20.0f);
if(y<10) return tex2D(s3,tc*20);
if(y<15&&y>=10) return fAlpha(tex2D(s3,tc*20),tex2D(s1,tc*20),(y-10)/5.0f);
if(y>90) return tex2D(s4,tc*20);
if(y>80&&y<=90) return fAlpha(tex2D(s1,tc*20),tex2D(s4,tc*20),(-80+y)*.1);
В общем я сделал тоже самое, только возле границ еще не смешивал текстуры. Зачем ты tex2D(s1,tc*20) на 20 умножаешь?

можно ж проще
float scale;

void VS_Main_(in VS_INPUT input, out VS_OUTPUT output)

{
	output.position = mul(input.position,matrixWorldViewProj);
	output.worldPosition = input.position;
	output.normal = normalize(mul(input.normal,matrixWorld));
	output.texCoords = scale*input.texCoords;
}
И из хорса подобной строкой все передать:
xSetEffectFloat(first.farmesh,"scale",0.1);

Кстати по моему надо не только от высоты, но и от нормали установить зависимость текстуры. Например если уклон больше 30 градусов то начинается смешивание со скальной текстурой и после ~60 градусов остается уже только текстура скалы без примеси текстуры текущей зоны
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (22.10.2011)