Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 12.11.2017, 14:36   #1
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Переместить вершину исходя из нормал мап.

Хоть тема и не про хорс, но про шейдер, спрошу тут. Поянл что в вершинном шейдере (покрайней мере мне) сложно или не возможно узнать цвет вершины, тот что она получит после ее текстурирования. Везде где читал, берут tex2d, однако ни на 2.0 ни на 3.0 у меня эта функция не работает в вершинном шейдере. Задача то проста. Переместить вершины по оси z на высоту соответствующую яркости координаты нормал мап текстуры. То есть тот самый Дисплейсмент. Что можете посоветовать?
(Offline)
 
Ответить с цитированием
Старый 13.11.2017, 00:11   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Переместить вершину исходя из нормал мап.

tex2Dlod попробуй
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Старый 13.11.2017, 19:08   #3
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Переместить вершину исходя из нормал мап.

да, похоже то что надо. Но почему то ничего она не меняет.
Как проверить передается ли цвет в нужную переменную?

float4x4 matWorldViewProjection;
float4x4 matViewProjection;
float4x4 MovMat;

sampler Texture0;

struct VS_INPUT 
{
   float4 Position : POSITION0;
   float2 Tex0     : TEXCOORD0;   
   float4 TColor   : COLOR0;
   float3 Normal   : NORMAL0;
};

struct VS_OUTPUT 
{
   float4 Position : POSITION0;
   float2 Tex0     : TEXCOORD0;
   float4 Diffuse   : COLOR0;
};

VS_OUTPUT vs_main(VS_INPUT Input)
{
VS_OUTPUT Out;
float4 color=tex2Dlod(Texture0,float4(Input.Tex0.xy,0,0));
if (color.r>0.3)
{
   Input.Position.z=Input.Position.z+0.5;//mul(Input.Position,MovMat);
  }else{
  Out.Position = mul(Input.Position, matViewProjection);
};

Out.Tex0.xy = Input.Tex0.xy;
//Input.TColor.b=0.2;

Out.Diffuse=Input.TColor;
return Out;
};
(Offline)
 
Ответить с цитированием
Старый 19.11.2017, 05:04   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Переместить вершину исходя из нормал мап.

Input.Position.z=Input.Position.z+0.5;//mul(Input.Position,MovMat);
}else{
Out.Position = mul(Input.Position, matViewProjection);
Чето хрень какая-то. Если красный больше 0.3, ты меняешь инпут, забиваешь на него и не пишешь аутпут
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com