forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Мультитекстурирование в Xors3D. (http://forum.boolean.name/showthread.php?t=8429)

Baisangur 04.06.2009 20:04

Мультитекстурирование в Xors3D.
 
Интересует мультитекстурирование в Ксорсе. В обычном блице, юзая FastExtension, я делал карты прозрачности по которым у меня в нужном месте накладывались нужные текстуры.
А вот как это сделать в Ксорсе? Как я понимаю без использование пиксельного шейдера тут дело не обойдется?

Mr_F_ 04.06.2009 20:16

Ответ: Мультитекстурирование в Xors3D.
 
почему бы и нет)

набросал:
не ручаюсь что без ошибок)

const float4x4 MatWorldViewProj;

texture Diffuse1; //тайл первый, использует 1й текстурный канал
texture Diffuse2; //тайл второй, использует 1й текстурный канал

texture Mask; //маска, где черное - тайл1, белое - тайл2, использует второй канал

sampler2D DiffTex1 = sampler_state {
Texture = <Diffuse1>;
MagFilter = Linear;
MinFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

sampler2D DiffTex2 = sampler_state {
Texture = <Diffuse2>;
MagFilter = Linear;
MinFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};

sampler2D MaskTex = sampler_state {
Texture = <Mask>;
MagFilter = Linear;
MinFilter = Linear;
AddressU = Wrap;
AddressV = Wrap;
};


struct vi {
float4 Position : POSITION0;
float2 TexCoords : TEXCOORD0;
float2 TexCoords1 : TEXCOORD1;
};

struct pi {
float4 Position : POSITION0;
float2 TexCoords : TEXCOORD2;
float2 TexCoords1 : TEXCOORD3;
};


void vs( in vi IN, out pi OUT ) {

OUT.Position= mul(IN.Position,MatWorldViewProj);
OUT.TexCoords = IN.TexCoords;
OUT.TexCoords1 = IN.TexCoords1;
}



float4 maskedps( in pi IN ) : COLOR0
{

float3 diff1=tex2D(DiffTex1,IN.TexCoords);
float3 diff2=tex2D(DiffTex2,IN.TexCoords);
float mask=tex2D(MaskTex,IN.TexCoords1).r;

return float4( lerp(diff1,diff2,mask), 1.0f);

}



technique masked
{
pass p0
{
AlphaBlendEnable = False;
vertexshader = compile vs_2_0 vs();
PixelShader = compile ps_2_0 maskedps();
}
}

Baisangur 04.06.2009 20:35

Ответ: Мультитекстурирование в Xors3D.
 
Опа =) Спасибо!

Knightmare 04.06.2009 21:37

Ответ: Мультитекстурирование в Xors3D.
 
Эм... Это типа 2 текстурных канала разделены альфой и по ней они смешиваются? Это в Хорсе и на ФФП делается, только реализовывал я такую фигу почти 2 года назад поэтому не помню точно номера бленда.

tormoz 04.06.2009 22:56

Ответ: Мультитекстурирование в Xors3D.
 
Цитата:

Сообщение от Knightmare (Сообщение 106700)
Эм... Это типа 2 текстурных канала разделены альфой и по ней они смешиваются? Это в Хорсе и на ФФП делается, только реализовывал я такую фигу почти 2 года назад поэтому не помню точно номера бленда.

Как почитаешь по форуму - на ксорсе все реализовано.
а как семплы откроешь - нефига нужного нет.
открываю деклс - мама дорогая, сколько всего непонятного и НИГДЕ не описанного !

Если бы не было Рендера в аське - давно бы забросил ксорс по причине никудышней документации.

Представляю, сколько буржуев забросило его по этой причине (остались самые упрямые)


Knightmare, нафига текстуры на запись залочил 7
Придется кучу всего переписывать...
и убери, наконец, вылет при загрузке при отсутствии файла. Ну оч. напрягает. Привыкли ужо как в блитце - грузанул, проверил, раз ноль, знач нет.

зы нарыл пяток багов, вот пытаюсь щас их локализовать. но идет туго (16 к строк в проекте - перевод с рабочего в блитце)

КопиРект уже точно не работает как надо.
Движение объектов - тоже не такое (динамика вся полетела к чертям, придется все коофициенты менять) но в чем точно загвоздка пока не пойму... (возможно в физике)

Шрифт рисуются в тексу в 2 раза больше

Далее будет...

Knightmare 04.06.2009 23:04

Ответ: Мультитекстурирование в Xors3D.
 
Цитата:

Сообщение от tormoz (Сообщение 106709)
Как почитаешь по форуму - на ксорсе все реализовано.
а как семплы откроешь - нефига нужного нет.
открываю деклс - мама дорогая, сколько всего непонятного и НИГДЕ не описанного !

Если бы не было Рендера в аське - давно бы забросил ксорс по причине никудышней документации.

Поэтому скора будет релиз новой версии, а там будем только над документацией работать, пока не доведем до мало-мальски терпимого уровня.
Цитата:

Сообщение от tormoz (Сообщение 106709)
Knightmare, нафига текстуры на запись залочил 7
Придется кучу всего переписывать...
и убери, наконец, вылет при загрузке при отсутствии файла. Ну оч. напрягает. Привыкли ужо как в блитце - грузанул, проверил, раз ноль, знач нет.

Чет не понял про текстуры. Насчет ошибок - как раз работаю над этим, откручиваю форточки, прикручиваю логи, все будет весело падать в случае чего, как в блитзе в обсчем, но с записью в лог (в дебаг версии движка).
Цитата:

Сообщение от tormoz (Сообщение 106709)
КопиРект уже точно не работает как надо.
Движение объектов - тоже не такое (динамика вся полетела к чертям, придется все коофициенты менять) но в чем точно загвоздка пока не пойму... (возможно в физике)

Шрифт рисуются в тексу в 2 раза больше

Ээээ... Ну xCopyRect я гляну, там вообще-то код был дикий, и его как водится никто не переписал... Насчет динамики - хз, FOV другой конечно, но врядли он скажется так, а вообще попробуй зум в 0 поставить, фиг его знает...
Насчет шрифтов - думаем прикрутить OpenType, многие хвалят, но надо разбиратся.

Mr_F_ 04.06.2009 23:08

Ответ: Мультитекстурирование в Xors3D.
 
Цитата:

Движение объектов - тоже не такое (динамика вся полетела к чертям, придется все коофициенты менять)
не думаю что его стоит менять, потому что у меня 80 кб кода уже на существующем ксорсе)

tormoz 05.06.2009 01:12

Ответ: Мультитекстурирование в Xors3D.
 
Да я вот пытался менять - нефига не могу настроить (на блитце 20 мин ушло)

Примитивное направление объекта на цель - не работает
колбасит крутит летает вокруг - в цель ну никак не попадет

Или слежение камеры за объектом
Довольно сложный код, с плавностями всякими, так вот вообще не пашет.
Там все основанно на получении координат и углов от объекта и по ним уже камера высчитывает свое положение.
Так вот неправильно она это все получает.

а уж с парентами - старая история. моск сломан - я так и не понял никаких закономерностей.

примитивнейший код :
плашка с комиксом перед камерой. внизу 4 маленькие плашки с кнопочками, все паренчено к камере - в блитце все отлично, в ксорсе ваще нефига не видно.
2 часа "ловил" эти плашки чтобы на место поставить.
меняешь скейл или положение одной - вторая исчезает...

и мавы, мавы мавы... то на рендер ворд то на текстуребуфер, и хрен поймешь от чего.
в общем уже 3 дня сижу - игра не пашет...

(это все был оффтоп отчаявшегося задроченного багами программиста...)

Knightmare 05.06.2009 01:15

Ответ: Мультитекстурирование в Xors3D.
 
Дык, даешь примеры, все поправим =) Хотя те же паренты я правил, другое дело что когда я с армии вернулся в СВН мы залили не самую свежую версию, так что все может быть.


Часовой пояс GMT +4, время: 09:42.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot