Войти
ПрограммированиеФорумГрафика

Рендеринг. Кто как делает? (3 стр)

Страницы: 1 2 3 4 512 Следующая »
#30
17:23, 10 апр. 2016

Andrey
> Еще по группам подели что-бы не слать часто неизменные данные

Опаньки, потребовалось 7 лет...

7 лет назад я тебе показывал доку от ATI, где ЭТО было написано чёрным по белому.
Но ты всё конючил - за 1 вызов, за 1 вызов :)

> но по факту в OpenGL это сделано уродливо и неудобно.

Писать register не уродливо ?

> тебе уже сказали ты выглядишь смешно.

Тебе уже много человек написали, что ты рогом упираешься :)


#31
17:26, 10 апр. 2016

mr.DIMAS
> Я в D3D9 использую Set***ShaderConstantF

Покажи, как лайты передаёшь ?

#32
17:32, 10 апр. 2016

Пока как-то так

struct GPURegister {
  float a, b, c, d;
};

....


// Load pixel shader constants
auto & ivp = camera->invViewProjection;
GPURegister psFloatConstants[] = {
  { ivp._11, ivp._12, ivp._13, ivp._14 },
  { ivp._21, ivp._22, ivp._23, ivp._24 },
  { ivp._31, ivp._32, ivp._33, ivp._34 },
  { ivp._41, ivp._42, ivp._43, ivp._44 },
  { pLight->GetPosition().x, pLight->GetPosition().y, pLight->GetPosition().z, 0.0f },
  { pLight->GetColor().x, pLight->GetColor().y, pLight->GetColor().z, 0.0f },
  { pLight->GetRange(), 0.0f, 0.0f, 0.0f },
};

pD3D->SetPixelShaderConstantF( 0, (float*)psFloatConstants, StaticArraySize( psFloatConstants ));

innuendo
> Писать register не уродливо ?
Не уродливо

#33
17:44, 10 апр. 2016

mr.DIMAS
> GPURegister

Я тебя обрадую, к регистру на GPU это практически не имеет отношения. Пережиток прошлого 

> > Писать register не уродливо ?
> Не уродливо

Пиши, я не против

#34
17:52, 10 апр. 2016

innuendo
> Я тебя обрадую, к регистру на GPU это практически не имеет отношения.
Тролль всея геймдева.

#35
18:06, 10 апр. 2016

mr.DIMAS
а зачем матрицу камеры объединять с лайтом?

#36
18:09, 10 апр. 2016

g-cont
> а зачем матрицу камеры объединять с лайтом?

Локальный лайт ? Привязанный к камере ?

#37
18:13, 10 апр. 2016

g-cont
> а зачем матрицу камеры объединять с лайтом?
Deferred shading - эта матрица для восстановления позиции по глубине. Знаю что можно без умножения на матрицу обойтись, но мне пока норм.

#38
18:15, 10 апр. 2016

mr.DIMAS
эм, я имел в виду, ты с каждым лайтом передаёшь одну и ту же матрицу камеры?

#39
18:19, 10 апр. 2016

g-cont
> эм, я имел в виду, ты с каждым лайтом передаёшь одну и ту же матрицу камеры?
Пока да.

#40
18:24, 10 апр. 2016

mr.DIMAS
> pD3D->SetPixelShaderConstantF
Ну константы передавать в пиксельный шейдр лучше не стоит, медленно. Передавай в вершинный. 

#41
18:27, 10 апр. 2016

Andrey
> Передавай в вершинный.

И сколько ты так передашь констант ?

#42
19:45, 10 апр. 2016

>> эм, я имел в виду, ты с каждым лайтом передаёшь одну и ту же матрицу камеры?
>Пока да.
>>>Это же организация рендеринга ? :)))
Это именно она

#43
20:03, 10 апр. 2016

Andrey
> тебе уже сказали ты выглядишь смешно. Константы лучше слать пачками за
> минимальне число вызов. Ну ты можешь хоть обосраться, но по факту в OpenGL это
> сделано уродливо и неудобно.
Только для того, чтобы в constant buffer-е поменять одну константу нужно вагон работы сделать. Подлочить буфер и заполнить его. А так как его рекомендуют делать D3D11_USAGE_DYNAMIC - это означает, что нам надо будет перезаливать буфер целиком даже из-за одной изменившейся константы. В сухом остатке - приходится писать портянку нетривиального кода, чтобы поиметь хотя бы ту же производительность как у уродливого OGL с его glUnformBlaBla.

p.s. glUniform - это пожалуй единственное место в OGL, которое мне нравится. Не надо так.
#44
20:54, 10 апр. 2016

MrShoor
> Только для того, чтобы в constant buffer-е поменять одну константу нужно вагон
> работы сделать.

Это человек не имеет желания читать доки, увы :)

Страницы: 1 2 3 4 512 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.