|
Xors3D Графический движок с поддержкой DirectX9 |
09.03.2012, 01:08
|
#1
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Мультитекстуринг
Как присвоить отдельным вертексам сурфейса разные текстуры?
Есть ли готовые решения?
(не предлагайте написать шейдер, я не умею их писать)
|
(Offline)
|
|
09.03.2012, 01:13
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Мультитекстуринг
никак. это должны быть разные сюрфейсы. на дх10 есть текстурные массивы.
ну или атлас.
|
(Offline)
|
|
09.03.2012, 11:02
|
#3
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Мультитекстуринг
Сообщение от HolyDel
никак. это должны быть разные сюрфейсы. на дх10 есть текстурные массивы.
ну или атлас.
|
Читал вчера справку по шейдерам, там написано:
Текстуры объекта. Каждый объект (а точнее его поверхности), могут иметь до 8 текстур, они передаются по семантике TEXTURE_n, где n – номе текстурного слоя в диапазоне [0, 7]. Например:
|
texture diffuseTexture : TEXTURE_0; // дифузная текстура, будет взята с
// нулевого слоя поверхности объекта
texture normalTexture : TEXTURE_1; // текстура карты нормалей, будет
// взята с первого слоя поверхности
// объекта
Значит, через шейдеры к одному сурфейсу можно применить до 8 текстур.
Значит уже есть готовые решения, кто-нибудь этим занимался.
|
(Offline)
|
|
09.03.2012, 12:57
|
#4
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Мультитекстуринг
8 текстур.
текстурные координаты то одни. ну или максимум две.
|
(Offline)
|
|
09.03.2012, 13:06
|
#5
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Мультитекстуринг
Сообщение от HolyDel
8 текстур.
текстурные координаты то одни. ну или максимум две.
|
Я видел видео различных редакторов, где кистями рисуют по мешу.
Берут текстуру, и наносят в нужную область. Никаких дополнительных
мешей при этом имхо не создаётся.
Есть теория, как они это делают?
Я много проблем для себя решил в программировании,
но проблему текстурирования ландшафтов не смог.
В максе я могу замоделить ландшафт, и затекстурить как надо,
но это мне не подходит.
Есть какие предложения по реализации нормального текстурирования ландшафта?
|
(Offline)
|
|
09.03.2012, 13:14
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Мультитекстуринг
смотря сколько текстур.
5 - вполне влазят в интерполяцию по цвету.
float4 resultcolor = tex2D(tex0,uv) * color.a + tex2D(tex1,uv) * color.r + tex2D(tex2,uv) * color.g + tex2D(tex3,uv) * color.b + tex2D(tex4,uv) * ((1.0 - color.a + color.r + color.g + color.b));
больше - сложнее, и скорее всего сведется к созданию дополнительных поверхностей.
|
(Offline)
|
|
09.03.2012, 13:32
|
#7
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Мультитекстуринг
Пардон, этот код - это что вообще?
|
(Offline)
|
|
09.03.2012, 13:51
|
#8
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Мультитекстуринг
Берут текстуру, и наносят в нужную область. Никаких дополнительных
мешей при этом имхо не создаётся.
|
а кто сказал? насколько я помню по рипперенью TES, там на каждую текстуру на террейне рисуется копия меша террейна с этой тексой. много текс блендятся поверх друг друга.
если тебе не говорят, что дополнительные меши создаются, это не значит, что они не создаются.
|
(Offline)
|
|
09.03.2012, 14:57
|
#9
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Мультитекстуринг
Сообщение от CrystalDev
Есть какие предложения по реализации нормального текстурирования ландшафта?
|
Смотреть насколько нормаль откланяется от вертикали, обращать внимание на высоту каждого пикселя и плюс можно еще по самим текстурным координатам что-нить замутить и таки из десятка хороших текстур можно сделать относительно приличный шейдер.
|
(Offline)
|
|
09.03.2012, 18:40
|
#10
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Мультитекстуринг
Кури Terrain Splatting.
|
(Offline)
|
|
09.03.2012, 19:30
|
#11
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Мультитекстуринг
Сообщение от MoKa
Кури Terrain Splatting.
|
http://www.blitzbasic.com/codearcs/c....php?code=2620
В последней версии используется один mesh.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо LLI.T.A.L.K.E.R. за это полезное сообщение:
|
|
09.03.2012, 19:38
|
#12
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Мультитекстуринг
сюрфейсов несколько, а именно они олицетворяют вызовы отрисовки.
|
(Offline)
|
|
09.03.2012, 22:49
|
#13
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Ответ: Мультитекстуринг
больше - сложнее, и скорее всего сведется к созданию дополнительных поверхностей.
|
Запихивал в ксорс шейдером 8 текстур, алгоритм топорен донельзя: - в альфа-канал суём маску для текстуры (можно нарисовать в любой 3д-малевалке по любому мешу-террейну (я лично использовал для летающих островов) любым интересующим цветом маску, а потом сунуть в каком-нибудь фотошопе);
- в rbg - саму диффузную текстуру (да, фокусы с нормалями не сделать, печаль..);
- опционально передаём масштабирование отдельно на каждый слой и смещение каким-нибудь 4-хкомпонентным вектором;
- смешиваем в порядке следования по альфе...
Где-то даже лежит (наверное) у меня исходник шейдера...
В качестве "бонуса" - 16 выборок на пиксель, да.
Вот шейдер; правда комменты похерились в кодировке... Ну и леший с ними:
float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4x4 matrixWorld : MATRIX_WORLD; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float3 lightDirection : LIGHT0_DIRECTION; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4 lightColor : LIGHT0_COLOR; // пїЅпїЅпїЅпїЅ
float4 entityColor : COLOR_DIFFUSE; // пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4 size0 ;
float4 size1 ;
texture lay0 : TEXTURE_0; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay1 : TEXTURE_1; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay2 : TEXTURE_2; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay3 : TEXTURE_3; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay4 : TEXTURE_4; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay5 : TEXTURE_5; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay6 : TEXTURE_6; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
texture lay7 : TEXTURE_7; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// LAYER_0
sampler layer_0 = sampler_state
{
Texture = <lay0>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_1
sampler layer_1 = sampler_state
{
Texture = <lay1>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_2
sampler layer_2 = sampler_state
{
Texture = <lay2>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_3
sampler layer_3 = sampler_state
{
Texture = <lay3>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_4
sampler layer_4 = sampler_state
{
Texture = <lay4>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_5
sampler layer_5 = sampler_state
{
Texture = <lay5>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// LAYER_6
sampler layer_6 = sampler_state
{
Texture = <lay6>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};// LAYER_7
sampler layer_7 = sampler_state
{
Texture = <lay7>; // пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
AddressU = WRAP;
AddressV = WRAP;
AddressW = WRAP;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MinFilter = ANISOTROPIC;
MagFilter = ANISOTROPIC;
MipFilter = ANISOTROPIC;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
MaxAnisotropy = 4;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
struct VSInput
{
float4 position : POSITION;
float3 normal : NORMAL;
float2 texCoords : TEXCOORD0;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
struct VSOutput
{
float4 position : POSITION;
float3 normal : TEXCOORD1;
float2 texCoords : TEXCOORD0;
};
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
VSOutput VSMain(VSInput input)
{
// пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
VSOutput output;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
output.position = mul(input.position, matrixWorldViewProj);
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
output.normal = normalize(mul(input.normal, matrixWorld));
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
output.texCoords = input.texCoords;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
return output;
}
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
float4 PSMain(VSOutput input) : COLOR0
{
// пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
float4 m0 = tex2D(layer_0, input.texCoords);
float4 m1 = tex2D(layer_1, input.texCoords);
float4 m2 = tex2D(layer_2, input.texCoords);
float4 m3 = tex2D(layer_3, input.texCoords);
float4 m4 = tex2D(layer_4, input.texCoords);
float4 m5 = tex2D(layer_5, input.texCoords);
float4 m6 = tex2D(layer_6, input.texCoords);
float4 m7 = tex2D(layer_7, input.texCoords);
float4 d0 = tex2D(layer_0, input.texCoords * size0.x);
float4 d1 = tex2D(layer_1, input.texCoords * size0.y);
float4 d2 = tex2D(layer_2, input.texCoords * size0.z);
float4 d3 = tex2D(layer_3, input.texCoords * size0.w);
float4 d4 = tex2D(layer_4, input.texCoords * size1.x);
float4 d5 = tex2D(layer_5, input.texCoords * size1.y);
float4 d6 = tex2D(layer_6, input.texCoords * size1.z);
float4 d7 = tex2D(layer_7, input.texCoords * size1.w);
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
float lit = dot(input.normal, -lightDirection);
// ambient
lit = max(0.15, lit);
float4 result = ((((((d0*(1-m1.a)+d1*m1.a)*(1-m2.a)+d2*m2.a)*(1-m3.a)+d3*m3.a)*(1-m4.a)+d4*m4.a)*(1-m5.a)+d5*m5.a)*(1-m6.a)+d6*m6.a)*(1-m7.a)+d7*m7.a;
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
// result = (result * entityColor * lit * lightColor);
// result.a = 0.5;
// return result;
return (result * entityColor * lit * lightColor);
}
// пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
technique multi_tile
{
pass p0
{
// AlphaBlendEnable= true;
VertexShader = compile vs_2_0 VSMain();
PixelShader = compile ps_2_0 PSMain();
}
}
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
09.03.2012, 23:51
|
#14
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Мультитекстуринг
http://www.youtube.com/watch?v=kKov7Uyqm6E
Вот видео из редактора юнити, смотрим на 3:00.
Вы хотите сказать, что при рисовке этой дороги
создалась копия террайна с альфой???
А если мне надо 20 дорог из разного кирпича,
эт что 20 альфатеррайнов создастся?
Да брехня это всё.
|
(Offline)
|
|
10.03.2012, 00:02
|
#15
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Мультитекстуринг
Даже вот возьмём например не мэп эдиторы, а текстурирование в максе.
Я могу на одну цельную модель кучу разных текстур наляпать в разные области.
Если это возможно в максе сделать с моделью, то блин наверное и в игре можно.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:23.
|