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

OpenGL 4.x (73 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 172 73 74 7583 Следующая »
#1080
21:31, 26 фев. 2018

Тут скорее вопрос - зачем оно нужно?
Первая мысль - OIT, но не проканает, остается только хитрый блендинг двух слоев, но в большинстве случаев можно настроить подходящую формулу смешивания.
Да и есть еще ImageLoad/Store, используя который можно получить тот же результат, контролируя процесс через
GL_INTEL_fragment_shader_ordering и GL_NV_fragment_shader_interlock (или через барьеры).
За производительность EXT_shader_framebuffer_fetch относительно ImageLoad/Store ничего не могу сказать, про причине отсутствия оного на десктопах, но думаю суть та же.


#1081
21:35, 26 фев. 2018

Fantom09
> контролируя процесс через
Зачем контролировать если чтение/запись идет только "своего" пикселя?
Синхронизации нужны только если из разных потоков будет доступ к одному пикселю.

#1082
21:48, 26 фев. 2018

gkv311
> Если обратить внимание на текущий список контрибьюторов и авторов расширения,
> то как раз NVIDIA и AMD там и не пахнет, если я ничего не упустил.
Конечно упустил. Есть важные расширения убогого АПИ которые могу быть результатом вклада исключительно от одного вендора, другой умный вендор может поддержать расширение от конкурента если посчитает его важным для себя, несомненно эти расширения могут стать EXT/ARB, войти в ядро, но для совместимости они будут поддерживаться, вот примеры:
GL_AMD_multi_draw_indirect - поддерживает nVidia
GL_NV_explicit_multisample - поддерживает AMD

#1083
22:04, 26 фев. 2018

/A\
> Зачем контролировать если чтение/запись идет только "своего" пикселя?
> Синхронизации нужны только если из разных потоков будет доступ к одному
> пикселю.
Собственно ты ответил на свой вопрос.
Отличный пример есть в демках от NVidia, там собственно и рассказывается о проблеме с синхронизацией на примере декалей:
https://docs.nvidia.com/gameworks/content/gameworkslibrary/graphi… calsample.htm

Если в двух словах:
GPU doesn't guarantee the order of the fragment's shader invocations. Thus, it may result in flickering or undefined artifacts when multiple decals are overlapped.
This is due to the fact that shader invocations can overwrite the memory based on older value right after other invocation's write.

#1084
23:01, 26 фев. 2018
Andrey
> убогого АПИ

кастую суслика  :)

#1085
23:19, 26 фев. 2018

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

#1086
6:57, 27 фев. 2018

barnes
> посетителям гей клубов достали
хаха, welcome to the club

#1087
(Правка: 8:44) 8:43, 27 фев. 2018

barnes
> и прочие подобные фразы
не, а как еще критиковать?

тем более что OpenGL реально с убогим АПИ (
чисто для примера
- SamplerState сделали, но почему до сих пор надо юзать Uniform1? для чего тогда там при бинде слот указывается?
- и вообще лично я считаю все эти идентификаторы по строке - убогостью (кто вообще додумался в GAPI (созданным в том числе и для работы без тормозов на всяких микроволновках) делать поиск по строкам?)
- или glBindBuffer и glBindBufferBase - имя glBindBufferBase ну очень информативно - ну сразу же понятно (нет) для каких оно буферов?

#1088
9:21, 27 фев. 2018

war_zes
> - SamplerState сделали, но почему до сих пор надо юзать Uniform1?
Вы о назначении тму? Так это не надо давно делать уже. Все указывается в шейдере.

#1089
9:47, 27 фев. 2018

barnes
> Вы о назначении тму? Так это не надо давно делать уже. Все указывается в
> шейдере.
хм, как? я как раз искал этот момент. у меня без Uniform1 не раб

#1090
(Правка: 10:27) 10:26, 27 фев. 2018

У вас видеокарта 4.2 держит?

#1091
10:36, 27 фев. 2018

war_zes
> и вообще лично я считаю все эти идентификаторы по строке - убогостью

ну-ну, поработай с кучей оффестов, особенно когда всё быстро меняется

> работы без тормозов на всяких микроволновках) делать поиск по строкам?)

ты пор поиск при инициализации ?

#1092
11:00, 27 фев. 2018

barnes
> У вас видеокарта 4.2 держит?
да

#1093
12:00, 27 фев. 2018

там все просто.
в начале как обычно биндим текстуры

    GL_MBind    (GL_TEXTURE0, image->texnum);
    GL_MBind    (GL_TEXTURE1, normalMap->texnum);
    GL_MBindCube  (GL_TEXTURE2, r_lightCubeMap[currentShadowLight->filter]->texnum);

а в шейдере делаем так

layout (binding = 0) uniform sampler2D  u_Diffuse;
layout (binding = 1) uniform sampler2D  u_NormalMap;
layout (binding = 2) uniform samplerCube  u_CubeFilterMap;
А если есть GL_ARB_shading_language_420pack, то можно запускать и на старых карточках. У меня на гф9800гт (гл3.5, например) это работало без проблем, надо только включение этого расширения в шейдере прописать было.

#1094
13:07, 27 фев. 2018

war_zes
> не, а как еще критиковать?

конструктивно... хотя это уже обсасывалось уже 100-500 раз

Страницы: 172 73 74 7583 Следующая »
ПрограммированиеФорумГрафика