Показать сообщение отдельно
Старый 12.11.2011, 20:37   #23
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Нубошоу по шейдерам.

типичная проблема атласов.
как это можно решать:
1) хранишь не кратные степени двойки тайлы, вокруг каждого ободок в 4 пикселя в виде "продолжения" этого тайла. в шейдере уменьшаешь текскоорды, чтобы взять только нужный квадрат, остальные 4 юзаются для фильтрации.
2) вместо обычной tex2d юзаешь
float2 TexCoords = текстурные координаты, какие были бы если б ты ими 1 тайл тайлили.
float2 dx = ddx(TexCoords);
float2 dy = ddy(TexCoords);
float4 tex = tex2Dgrad(mytex,TexCoords,dx,dy);

зачем это нужно - когда видюха семплит текстуру, она выбирает правильный мип, если у тебя там резкий перепад текстурных координат (например у одного пикселя 0, у следующего 1), то выбирается лоуресный мип (потому что типа если маленькое расстояние между пикселями на триангле, значит текстура сплющена там, значит ей не нужен хайрес там - думает видюха), и выходит что если ты тайлишь атлас каким-нибудь fmodoм, на стыках тайлов швы.
tex2Dgrad позволяет делать выборку с заранее посчитанными данными, по которым выберется мип.
но он помедленнее будет обычного tex2D.
на самом деле ваще не рекомендую нифига юзать такие атласы на терейн, хотя как знаешь.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
dsd (12.11.2011), HolyDel (14.11.2011), Nex (12.11.2011)