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

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

Страницы: 1 2 3 412 Следующая »
#15
13:50, 10 апр. 2016

g-cont
> C каких пор DX стал стейт-машиной?
С тех пор как там появились функции, название которых начинается с Set


#16
13:51, 10 апр. 2016

d.m.k
> > сброс стейтов/байндингов в дефолтное состояние
> самое бесполезное занятие

Да, да - попробуй отрисовать после тесселяции, столько много для себя узнаешь :)

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

innuendo
> Да, да - попробуй отрисовать после тесселяции, столько много для себя узнаешь
> :)
со своими наивными предположениями о том, что кроме балабола вроде тебя ни кто "после тесселяции" не отрисовывал ты выглядишь очень смешно и глупо

#18
14:01, 10 апр. 2016

d.m.k
> отрисовывал ты выглядишь очень смешно и глупо

И зачем я общаюсь с ботом ?


Ну давай, покажи пример, как ты рисуешь обычные трианглы после patch3 без сброса hull/domain шейдера

#19
14:06, 10 апр. 2016

>>С тех пор как там появились функции, название которых начинается с Set
Я за развитием DX не слежу, но это опасная тенденция. Зачем нам еще одна стейт-машина?

#20
14:33, 10 апр. 2016

innuendo
> Речь не только про стейты, но и про ресурсы. Тебе сколько раз приходилось
> работать с чужим кодом ? Я про 3D
Что-то править в чужих движках не приходилось - у меня свой есть, зачем мне чужие? Кроме того, лучше, чтобы за рендер-систему отвечал только один человек, который знает её хорошо. А мелкие программы и примеры - это не движки и к теме не относятся. Там за стейтами надо следить, но обычно в силу небольшого размера, это не очень сложно.
За ресурсами должна следить та же система, что и за всеми остальными стейтами. Если даже ресурс является отдельным классом и хочет себя забиндить, он не должен вызывать glBindBuffer\glBindTexture, а он должен попросить об этом центральную систему, которая знает, является ли этот ресурс уже забинденным и так далее.

innuendo
> Ну давай, покажи пример, как ты рисуешь обычные трианглы после patch3 без
> сброса hull/domain шейдера
Это уже D3D-проблемы, в GL шейдеры идут вместе. Перед отрисовкой без тесселяции надо убедиться, что шейдер тесселяции не установлен, отключив его, если это не так. Рендер-система должна знать, для каждой стадии конвейера, какой шейдер она ставила последним.

#21
14:37, 10 апр. 2016

g-cont
> Я за развитием DX не слежу, но это опасная тенденция. Зачем нам еще одна
> стейт-машина?
Низачем, вот в 12 диксах и переходят на PipelineState, и Pukan API туда же.
А до этого - полный девайс стейтов.

#22
14:39, 10 апр. 2016

gammaker
> Что-то править в чужих движках не приходилось - у меня свой есть, зачем мне
> чужие?

Вот когда поимешь проблемы с чужим кодом, сразу пропадёт желание что-то "писькомизировать".
Пусть работает медленней - зато стабильно и без багов

#23
14:46, 10 апр. 2016

g-cont
В DX9 была стейтмашина в одном месте - на записи стейтблоков. Там девайс делал кое-что непотребное: в режиме записи стейтблока он патчил собственный vtbl, чтобы вызовы апи записывать. Через это смешно выглядел один странны движок, который пытался эффекты грузить в параллельном треде без внешней синхронизации...

#24
14:52, 10 апр. 2016

innuendo
> Пусть работает медленней - зато стабильно и без багов
Без багов будет если я после почти каждого дроколла буду ресурсы отбиндивать. А если просто время от времени, то это уже какая-то маскировка багов.

#25
14:53, 10 апр. 2016

Delfigamer
в GL, когда я перешёл на нефиксированный конвейер, я вдруг понял, что кол-во стейтов требующих переключения упало до минимума. Где-то запись глубины выключить, где-то бленд включить и всё. А DX тем временем шёл по строго обратному пути, выходит :)

#26
15:27, 10 апр. 2016

gammaker
> А если просто время от времени, то это уже какая-то маскировка багов.

Да не просто время от времени, например, после прохода. Сделали opacity - потом flush, сделали transparent - потом flush 

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

Общий подход я уловил. Потихоньку модифицирую движок.

Кстати кто как загружает константы в шейдеры? Я в D3D9 использую Set***ShaderConstantF, предварительно подготовив общий буфер с константами для заливки. Не интересует DX12/Vulkan.

#28
16:44, 10 апр. 2016

mr.DIMAS
> Кстати кто как загружает константы в шейдеры?

Провоцируешь ? :)

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

Точнее

Set***ShaderConstant*

> предварительно подготовив общий буфер с константами для заливки.

Адепт загрузки за 1 вызов ?

#29
17:09, 10 апр. 2016

mr.DIMAS
> Кстати кто как загружает константы в шейдеры? Я в D3D9 использую
> Set***ShaderConstantF, предварительно подготовив общий буфер с константами для
> заливки. Не интересует DX12/Vulkan.
Правильно делаешь. Еще по группам подели что-бы не слать часто неизменные данные. В Vulkan/D3D12 нету раздельных вызовов для отсылки констант.
innuendo
>Провоцируешь ? :)
тебе уже сказали ты выглядишь смешно. Константы лучше слать пачками за минимальне число вызов. Ну ты можешь хоть обосраться, но по факту в OpenGL это сделано уродливо и неудобно.

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

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