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

D3D9-Вопросы. Device.SetGammaRamp() (6 стр)

Страницы: 13 4 5 6 7 8 Следующая »
#75
12:54, 13 апр. 2019

Хаус
> Нафиг оффтопишь?
А что, нельзя?

Я тебе ссылок на крутые учебные материалы подогнал. Почитал бы лучше, потом бы обсудили.


#76
14:18, 13 апр. 2019

А я до сих пор использую эффекты в DirectX 9.

+ Показать

#77
14:23, 13 апр. 2019

Эффекты - это не оптимально, но удобно. Если они не являются узким местом в производительности, то почему нет?

#78
(Правка: 14:26) 14:24, 13 апр. 2019

Кстати, а в чём разница и как правильно компилить через fxc.exe, что значат расширения типа cso и тд, на msdn это смутно описывается.
Как я понял, надо тупо писать /T profile /Fo shader.cso shader.hlsl или есть нюанс? (с)
P.S.: d3dcompiler в Wine не компилит даже простейший шейдер(

#79
14:28, 13 апр. 2019

alexey.ch
Почему не оптимально? Спрашиваю серьёзно, без всякого сарказма. Много встречал здесь на форуме высказывающихся не в пользу эффектов. Не думаю что во всей игровой логике и работе движка это будет заметным узким местом.

#80
(Правка: 14:39) 14:32, 13 апр. 2019

Я обычно через API компилировал.

Dimich
> что значат расширения типа cso
compute shader object? Наверно.

А вообще расширения входного и скомпилированного файлов значения не имеют.

> d3dcompiler в Wine не компилит даже простейший шейдер(
Когда я моследний раз смотрел сырцы вайн, реализация DirectX там была очень сырая, много чего не дописано.

Под линуксом или маком лучше изучать OGL.

#81
(Правка: 14:39) 14:36, 13 апр. 2019

DODge
> Почему не оптимально?
Потому, что эффект работает тупо: поставить блендстеит, сэмплерстейты, поставить все шейдеры по порядку и т.д. И так при каждом сетпасе.

Когда у тебя сложная сцена с кучей материалов - это становится узким местом.

В целях оптимизации материалы сортируются и назначение того или иного шейдера, ресурса или состояния осуществляется только по необходимости.

#82
14:47, 13 апр. 2019

alexey.ch
> Я обычно через API компилировал.
А вот D3DCompile выдаёт INVALID_CALL под вайном.

> А вообще расширения входного и скомпилированного файлов значения не имеют.
Про входное точно что-то было в msdn, лень искать.

> Когда я моследний раз смотрел сырцы вайн, реализация DirectX там была очень
> сырая, много чего не дописано.
Так прикол в чём, я поставил sdk, скомпилил в ps_4_1, работает под вайном, там именно какая-то беда с компилятором, или я чего-то не понимаю.

#83
14:56, 13 апр. 2019

alexey.ch
> Потому, что эффект работает тупо: поставить блендстеит, сэмплерстейты,
> поставить все шейдеры по порядку и т.д. И так при каждом сетпасе.
Ну почему же тупо? Даже без эффектов в этом же всегда необходимость. Конечно при определённых обстоятельствах их можно не устанавливать повторно.

alexey.ch
> Когда у тебя сложная сцена с кучей материалов - это становится узким местом.
> В целях оптимизации материалы сортируются и назначение того или иного шейдера,
> ресурса или состояния осуществляется только по необходимости.
А вот это на использование эффектов никак не влияет. Это уже зависит от того как реализован рендер-пайплайн. Если голова и руки на своём месте, то все необходимые сортировки и комплектации будут сделаны перед рендером. Те же техники (technique) в эффекте позволяют выбрать нужные пассы для соответствующего рендера конкретного материала.

+ Показать
#84
(Правка: 15:04) 15:03, 13 апр. 2019

DODge
> А вот это на использование эффектов никак не влияет.
Ты не понял.

Еще раз: эффект при каждом сетпасе обновляет все параметры. Надо/не надо, поменялось/не поменялось. Тупо переназначает всю пачку параметров.

Тебе надо поменять только блендстейт? Фигушки: прицепом пересетишь и сэмплейстейты, и шейдеры, и все остальное.

Выполняя установку параметров вручную ты экономишь кучу бесполезных вызовов, что невозможно при использовании эффектов.

#85
15:17, 13 апр. 2019

alexey.ch
> эффект при каждом сетпасе обновляет все параметры. Надо/не надо, поменялось/не поменялось. Тупо переназначает всю пачку параметров.
А как же эти флажки для Direct3D9.Effect.Begin?

Direct3D9.FX.DoNotSaveState
Direct3D9.FX.DoNotSaveShaderState
Direct3D9.FX.DoNotSaveSamplerState

Они же как раз для этого и предназначены.

Вот например:

  pass SomeMaterialRenderPass
  {
    AlphaBlendEnable = false;
    AlphaFunc = Greater;
    AlphaTestEnable = true;
    ZEnable = true;
    ZFunc = LessEqual;
    ZWriteEnable = true;
    CullMode = ccw;
    FillMode = solid;
    VertexShader = compile vs_3_0 someVertexShader();
    PixelShader = compile ps_3_0 somePixelShader();
  }

И затем следующие пассы типа этого:

  pass AnotherRenderPass
  {
    VertexShader = compile vs_3_0 anotherVertexShader();
    PixelShader = compile ps_3_0 anotherPixelShader();
  }

Играя с этими флагами вполне можно контролировать установку тех или иных параметров.

#86
15:24, 13 апр. 2019

alexey.ch
> А что, нельзя?

создал бы ты уже давно свою тему

#87
15:37, 13 апр. 2019

DODge
> Direct3D9.FX.DoNotSaveState
> Direct3D9.FX.DoNotSaveShaderState
> Direct3D9.FX.DoNotSaveSamplerState
Это что-то новенькое. Managed DirectX?

И судя по документации они означают что-то другое. Хотя я не уверен, спорить не буду.

#88
15:49, 13 апр. 2019

Хаус
Успокойся. Обсуждаемое тебе полезно и как раз по теме, только в тему нужно вникнуть, чтобы это понять.

#89
19:53, 13 апр. 2019

Mikle
> Успокойся.

ты хоть читал на какие слова я считаю оффтопом?

Страницы: 13 4 5 6 7 8 Следующая »
ПрограммированиеФорумГрафика