• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

[sh] как прилепить вторую Cube Map к шейдеру (есть ответ)

Автор anval, 24 февраля 2008, 20:05:19

« назад - далее »

anval

На оффоруме не нешел ничего внятного(http://www.quest3d.nl/community/index.php?topic=63153.0).Как я понял ,каким то образом изменяют шейдер и втыкают непосредственно к поверхности.Но что именно меняют?

Const_47

#1
В общем кубмапа лепится к шейдеру так

Линкуем канал текстуры(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

anval