Comments 20
Отличная статья, спасибо за труд! Надеюсь, что не последняя
Спасибо, статья не последняя. Возможно по смыслу надо бы статьи в другом порядке выпускать, просто для каких-то статей уже были старые наброски. В конце порядок содержания поменяю.
Discard не спасал, хотя он срабатывал на 80% пикселей.
Так и не должен был, все sgx / powervr-ы — tbdr: http://blog.imgtec.com/powervr/a-look-at-the-powervr-graphics-architecture-tile-based-rendering
Те от дискарда ему делалось даже хуже из-за бранчинга во фрагментном шейдере.
Делал что-то похожее, было интересно разобраться как работают smoothed-particle hydrodynamics и marching cubes по отдельности, и потом совместить их, практической ценности мало :)
Видео
Шикарно. Делал когда-то нечто подобное, но с MatCap текстурой совместить не догадался. Делал честные отражения с кубмапы, коэффициенты преломления, коэффициенты отражения… В общем мудохался много, а результат не намного лучше вышел. Так же очень круто с бордерами и смешиванием материалов. Просто снимаю шляпу.
Эх, когда же мощности мобильных устройств будет хватать на такую воду:
http://madebyevan.com/webgl-water/
http://madebyevan.com/webgl-water/
Еще вот такое есть — http://tympanus.net/Development/RainEffect/
Тоже жутко прожорливое, но крутое.
Тоже жутко прожорливое, но крутое.
У меня макбук эир-то не осиливает :) а вы про мобильники
Круто! Вариант с отражениями действительно весьма хорош и заметно превосходит мой бесшейдерный вариант. С другой стороны, у нас были разные задачи, потому и разные результаты. :) Не так давно делал рескин для tvOS версии, так пришлось добавлять тени и блики, потому что старый вариант под новую графику не подходил.
Скрытый текст
А точно discard дает прирост на мобильных GPU? На «взрослых» видяхах все с точностью наоборот. Так как мы не можем учитывать результат depth test. Не ясно дискарднется пиксель или нет.
Depth test в нашем случае отключен т.к. рендерим плоский квад. Сам discard не так страшен, как if(gradient<=0.0), в который он помещен. Однако после discard у нас еще идут 5-8 вызовов texture2D(), которые в сумме более тяжелые для GPU чем один if(). На глаз это никак не определить, нужны только тесты на девайсах. И именно тесты показали, что в этом шейдере от discard польза таки есть.
На мобильных GPU tile based рендер. И discard в общем дает еще большие тормоза, чем на десктопных картах. Но тут очень частный случай. Нет работы с глубиной + нет оверлапящихся треугольников. Так что вполне может быть что ускоряет.
Sign up to leave a comment.
Рендеринг капли с прозрачностью и отражениями на OpenGL