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

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

Поделиться

Страницы: 1 2

CRASHERПостоялецwww13 ноя. 201718:20#15
Rikk,если ты меня хочешь подловить, то читай внимательней что я написал. А если нет, тода это не одно и то же, я про то, что я хочу получить с помощью нормапы.
Wraith,vertex texture fetch? Не знаю  есть ли этот функционал в RM.
E-Cone в начале верно сказал. У меня она не подсветилась почему то. Теперь код компилится без ошибки, но ничего не происходит, плоскость плоская(вершин в ней 300х300). Возможно семплер не верно беру.
float4x4 matWorldViewProjection;
float4x4 matViewProjection;
float4x4 MovMat;

sampler Texture0;

SamplerState HeightLinear
{
    Texture=Texture0;
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
}; 

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;
};

прошу подсказать, может я что то не понимаю, и делаю не верно.

slava_mibМодераторwww13 ноя. 201718:33#16
> прошу подсказать, может я что то не понимаю, и делаю не верно.
CRASHER, шейдер похож на бред сумасшедшего, что ты им хотел выразить - понять невозможно. Потому и подсказать что сделано неправильно - сложно, ибо не ясно как оно должно быть "правильно".

float4 color не используется толком - возможно, просто либо все пиксели попадают в if(), либо наоборот - не попадают.

В таких случаях, ИМХО, проще всего делать как-то так (чисто для проверки)

Input.Position.xyz += color.xyz*5;
Без всяких там if'ов и прочего.

CRASHERПостоялецwww13 ноя. 201719:20#17
slava_mib, ты в нем прекрасно разобрался, не ерничай) А проверка показала что в color ничего не передается(Out.Position.xyz += color.xyz*5;). Мне кажется, я не знаю как правильно sampler вызвать. Запись sampler Texture0; мне кажется не верная. Если есть пример нужный мне то прошу тыкнуть меня в него) Не верю, что такую простую и в то же время востребованную операцию никто, уже сотню раз, не делал.

Правка: 13 ноя. 2017 19:22

CRASHERПостоялецwww13 ноя. 201719:32#18
мда ты прав, я зачем то исключил вывод вершин при выполнении условия)

переделал, теперь сообщается о потере текстуры. Как ее правильно ввести в VS подскажите пожалст!

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=mul(Input.Position,MovMat);
};

Out.Position = mul(Input.Position, matViewProjection);
Out.Tex0.xy = Input.Tex0.xy;
Out.Diffuse=Input.TColor;
return Out;
};

ошибка звучит так.

Missing vertex texture object named 'Texture0' in vertex shader 'Vertex Shader' in pass 'Pass 0'

Правка: 13 ноя. 2017 19:34

CRASHERПостоялецwww13 ноя. 201719:37#19
тут обсуждается похожее, но решения не видно. http://www.gamedev.ru/code/forum/?id=89721
slava_mibМодераторwww13 ноя. 201719:49#20
В обезьяне - оно, вроде, просто мышкой через контекстное меню добавляется... Уже не помню, так давно она умерла (жаль, кстати).
CRASHERПостоялецwww13 ноя. 201720:19#21
slava_mib, а потом как в VS его загрузить?
slava_mibМодераторwww13 ноя. 201720:39#22
CRASHER, по-моему там было что-то вроде Add Texture Object - это для пиксельного шейдера, и Add Vertex Texture Object - для вертексного. Но точно уже не помню, как говорил выше.
CRASHERПостоялецwww13 ноя. 201722:30#23
Жаль никто не сталкивался с этой задачей. Ответа по прежнему нет.
Объявление через texture не дает возможности работать над текстурой так как она имеет статус const. Sampler и Sampler2D не дают нужного так как после этого имеется ошибка -  Missing vertex texture object named 'Texture0' in vertex shader 'Vertex Shader' in pass 'Pass 0'.
RikkПостоялецwww13 ноя. 201723:10#24
CRASHER
> Переместить вершины по оси z на высоту соответствующую яркости координаты
> нормал мап текстуры. То есть тот самый Дисплейсмент.
хотелось подловить.
успешно?

Правка: 13 ноя. 2017 23:12

CRASHERПостоялецwww14 ноя. 201718:25#25
Rikk, нет... где ты тут видишь в моих словах сравнение нормал мап и дисплейсмнт?
WraithПостоялецwww15 ноя. 20178:02#26
CRASHER
> Wraith,vertex texture fetch? Не знаю есть ли этот функционал в RM.
Если нет, то задачу в RM можно решить только забейкав в сторонних программах семплы нормалмапы в вершины загружаемой геометрии. Боль и страдания с форматами мешей прилагаются.

Страницы: 1 2

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

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