Quest3D - Русскоязычное сообщество

Quest3D => Визуализация, Шейдеры => Тема начата: anval от 24 Февраля 2008, 20:05:19



Название: [sh] как прилепить вторую Cube Map к шейдеру (есть ответ)
Отправлено: anval от 24 Февраля 2008, 20:05:19
На оффоруме не нешел ничего внятного(http://www.quest3d.nl/community/index.php?topic=63153.0).Как я понял ,каким то образом изменяют шейдер и втыкают непосредственно к поверхности.Но что именно меняют?


Название: Re: как прилепить вторую Cube Map к шейдеру
Отправлено: Const_47 от 01 Марта 2008, 00:44:57
В общем кубмапа лепится к шейдеру так

Линкуем канал текстуры(c кубмапом) с каналом surfase того объекта на который мы хотим применить кубмап(припустим на первый чилд для текстуры(0):)).

В шейдере объявляем переменную СubMap типа texture , и чтобы слинковать с первым чилдом для текстуры пользуемся Q3D семантикой COLORMAP0.

texture  СubMap     : COLORMAP0; 

Объявляем семплер для Текстуры.

samplerCUBE СubMapSampler = sampler_state {
   Texture = <СubMap>;
   MinFilter = Linear;
   MagFilter = Linear;
   MipFilter = Linear;
   AddressU = clamp;
   AddressV = clamp;
   AddressW = clamp;
};

В пиксельном шейдере читаем кубмап
может так
float4 textureCubMap = texCUBE(СubMapSampler,float4(reflVect.x,reflVect.y,reflVect.z,1))

А может и нет, в зависимости от того что вы хотите. Дальше все зависит от фантазии.
Для глобального Кубмапа пользоваться семантикой ENVIRONMENTCUBE


Название: Re: как прилепить вторую Cube Map к шейдеру
Отправлено: anval от 01 Марта 2008, 15:36:10
Большое спасибо!Заработало! :)