Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Переместить вершину исходя из Normal Map.

Переместить вершину исходя из Normal Map.

Поделиться

Страницы: 1 2 Следующая

CRASHERПостоялецwww12 ноя. 201713:45#0
Поянл что в вершинном шейдере (покрайней мере мне) сложно или не возможно узнать цвет вершины, тот что она получит после ее текстурирования. Везде где читал, берут tex2d, однако ни на 2.0 ни на 3.0 у меня эта функция не работает в вершинном шейдере. Задача то проста. Переместить вершины по оси z на высоту соответствующую яркости координаты нормал мап текстуры. То есть тот самый Дисплейсмент. Что можете посоветовать?
E-ConeУчастникwww12 ноя. 201713:57#1
tex2dlod
std::cinУчастникwww12 ноя. 201713:57#2
Vertex shader 3_0 supports texture lookup in the vertex shader using texldl - vs.
CRASHERПостоялецwww12 ноя. 201714:00#3
E-Cone,std::cin, проверю посмотрю. Ну а вообще, я в правильном направлении двигаюсь для решения поставленной задачи?
CRASHERПостоялецwww12 ноя. 201714:04#4
Да, забыл упомянуть tex2d функция из render monkey.
MikleМодераторwww12 ноя. 201718:38#5
CRASHER
Это работает на Vertex shader 3_0, в игра "Школа пилотов" (есть в профиле) я именно так строю ландшафт. Это работает на DX9-совместимых видеокартах nVidia и DX10-совместимых видеокартах ATI. Более старые видеокарты поддерживают работу только с float текстурами, например D3DFMT_A32B32G32R32F.
CRASHERПостоялецwww12 ноя. 201718:56#6
Mikle, есть возможность шейдер или часть шейдера с нужными операциями показать? Я не давно этим вопросом озадачился. Пока вояю в программе с дружелюбным интерфейсом с названием как уже говорил render monkey. Было бы здорово увидеть код портированный для этого по.
MikleМодераторwww12 ноя. 201719:39#7
CRASHER, у меня asm shader, вот он весь:
+ asm shader
CRASHERПостоялецwww12 ноя. 201723:02#8
а нет ли более очевидного кода? с asm не знаком.
WraithПостоялецwww12 ноя. 201723:25#9
Ну так самое время познакомиться.
CRASHERПостоялецwww12 ноя. 201723:37#10
Wraith, а думаешь стоит? Я обязательно займусь глубоким изучением такого рода если будет необходимость. Я просто прошу хотябы в общих чертах сказать, как достать цвет вершины который будет наложен на нее в пиксельном проходе?
WraithПостоялецwww13 ноя. 20170:14#11
Ну берешь и семпилишь текстуру в VS, делов-то. Mikle все верно сказал. Надо только документацию прочитать про vertex texture fetch.
RikkПостоялецwww13 ноя. 20171:00#12
CRASHER
> То есть тот самый Дисплейсмент.
displacement != normal map.
не?

Правка: 13 ноя. 2017 1:01

slava_mibМодераторwww13 ноя. 20175:57#13
> код портированный для этого по.
CRASHER, "под это по" ничего "портировать" не надо - там обычный HLSL/GLSL . А если ты и их не знаешь - то это вопрос не портирования, а вопрос того, что просто не знаешь - читай документацию и всё станет понятно.

> Я просто прошу хотябы в общих чертах сказать, как достать цвет вершины который будет наложен на нее в пиксельном проходе?
CRASHER, да никак его не достать. Его можно только рассчитать И в пиксельном И в вертексном шейдере - вот и всё.

> displacement != normal map.
> не?
Rikk, угу, это разные вещи совершенно.

Правка: 13 ноя. 2017 5:59

MikleМодераторwww13 ноя. 20178:36#14
CRASHER
В самом шейдере чтение текстуры - это одна инструкция.
Перед выполнением шейдера нужно загрузить текстуру в соответствующий семплер, это не те семплеры, что используются в пиксельном шейдере, например:
pDev->SetTexture (D3DVERTEXTEXTURESAMPLER0, pTex);
Текстуру загрузили в семплер №0.
Параметры семплера настраиваются так же, как у пиксельных семплеров, например:
pDev->SetSamplerState (D3DVERTEXTEXTURESAMPLER0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
Включили LINEAR фильтрацию на MAGFILTER.
Если сделать одинаковые настройки - получишь одинаковое значение в вертексном и пиксельном шейдере (при условии, что координаты пикселя точно совпадут с вертексом).

Страницы: 1 2 Следующая

/ Форум / Программирование игр / Графика

2001—2017 © GameDev.ru — Разработка игр