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

Трехмерные спрайты - как реализовать?

Страницы: 1 2 3 4 Следующая »
#0
11:47, 6 июня 2011

Всем привет.

Некоторое время назад наткнулся на интересное видео, в котором демонстрируются "трехмерные" спрайты - http://www.youtube.com/watch?v=-Q6ISVaM5Ww#at=2m50s

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

Я не специалист в DirectX или в OpenGL и теряюсь в догадках, как это можно реализовать. Насколько понимаю, ни в dx, ни в gl нельзя писать произвольные значения в z-buffer и нельзя во фрагментном шейдере брать значения из рендер-таргета, так что вероятно тест глубины для таких спрайтов делается как-то иначе..

Вобщем есть ли у вас идеи как реализовать тест глубины и рендеринг таких трехмерных спрайтов в DirectX или в OpenGL? Любые предположения приветствуются.

#1
11:58, 6 июня 2011

Писать можно. Например gl_FragDepth.
Но не советую - ирли-з отключится.

#2
12:00, 6 июня 2011

Как вариант - если железо огл4, то можно тесселятором нагенерить трисов и в Evaluation шейдере менять позиции нагенеренных трисов, читая из текстуры.

#3
12:02, 6 июня 2011

вроде просто 3D спрайт = текстура цвета+текстура нормалей + текстура глубины.
Blew_zc
> Писать можно. Например gl_FragDepth.
> Но не советую - ирли-з отключится.
ну тут можно попробовать оптимизировать стенсли тестом, в сетки 2D и отсортировать от камеры можно довольно легко.

#4
12:08, 6 июня 2011

Попробовать конечно можно. Но я бы упор сделал на тесселятор - уж больно штука пригодная для таких вещей. И думаю производительность тесселятора будет только расти в будущем...

#5
12:19, 6 июня 2011

Blew_zc
> Но я бы упор сделал на тесселятор

любитель тесселяции ? :)

#6
14:12, 6 июня 2011

Blew_zc
> ирли-з
что это такое?

а все-таки, можно ли во фрагментном шейдере читать из рендер-таргета или буффера глубины? Тогда бы вобще все было просто..
Например, создать текстуру, сделать ее рендер-таргетом и ее же послать в качестве текстуры в шейдер и там делать из нее выборки - извращение или так можно делать? )

#7
16:23, 6 июня 2011

НВ иногда в своих демках так делает. Но спецификация говорит, что результат чтения из такой текстуры неопределен Например, на АТИ либо совсем работать не будет, либо будут жуткие лаги.
Зачем тебе читать? Просто пиши - включится повторный тест глубины.

innuendo
Да вот. Товарищ d.m.k. начал разбираться, да меня заинтересовал. Вкурим до конца-возможно родится статья с практическим применением

#8
16:26, 6 июня 2011

... в виде адаптивной тесселяции в зависимости от градиента дисплейсмент мапы и расстояния от наблюдателя.

к ТС:
ирли-з - это когда рендер идет только в дептх-стенсиль без записи к колорбуфер. При этом железка как-то хитро оптимизирует последующую растеризацию.

#9
17:04, 6 июня 2011

Blew_zc
> Да вот. Товарищ d.m.k. начал разбираться, да меня заинтересовал. Вкурим до
> конца-возможно родится статья с практическим применением

если что,  готов травкой поделиться :)

#10
17:45, 6 июня 2011

А такой вопрос. ирли-з отключается только для текущего кадра (до смены буферов или как там кадры отделяются) или как-то иначе?

#11
18:41, 6 июня 2011

Ну, рисуешь только в дептх - включается. Он отключается когда включаешь запись в з-буф.

#12
19:28, 6 июня 2011

Blew_zc
> Ну, рисуешь только в дептх - включается. Он отключается когда включаешь запись
> в з-буф.

всё не так просто как кажется :)

#13
19:35, 6 июня 2011

Согласен. Все сложнее, но пользователю остается только догадываться как там в железках разных. Я по крайней мере не видел конкретных паперов на сей счет. Может не туда смотрел?..

#14
19:45, 6 июня 2011

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

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

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