Войти
ФлеймФорумПрограммирование

Software rendering

Страницы: 1 2 314 15 Следующая »
#0
(Правка: 10 апр. 2019, 2:08) 10:12, 25 фев. 2019

Тема задумана как сборник информации по данному вопросу, и для обсуждения по теме.


Теория

Доказательство линейности 1/w, u/w, v/w в screen-space:
http://www.lysator.liu.se/~mikaelk/doc/perspectivetexture/

Барицентрические координаты:
https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-trac… c-coordinates
https://fgiesen.wordpress.com/2013/02/06/the-barycentric-conspirac/

Статьи о half-space rasterization от Fabian Giesen (лучшее изложение, на мой взгляд):
https://fgiesen.wordpress.com/2011/07/06/a-trip-through-the-graph… -2011-part-6/
https://fgiesen.wordpress.com/2011/07/10/a-trip-through-the-graph… -2011-part-8/
https://fgiesen.wordpress.com/2013/02/08/triangle-rasterization-in-practice/
https://fgiesen.wordpress.com/2013/02/10/optimizing-the-basic-rasterizer/

Статья о half-space rasterization от (вроде бы) автора SwiftShader:
https://web.archive.org/web/20171128164608/http://forum.devmaster… rization/6145

Статьи от Chris Hecker о рендеринге вообще и scanline algorithm в частности:
http://chrishecker.com/Miscellaneous_Technical_Articles

Статья по рендеру:
https://www.scratchapixel.com/lessons/3d-basic-rendering/rasteriz… ion-algorithm

Если рендерер пытается быть близким железу/GAPI, неплохо бы знать, как они работают.
Хорошим руководством является GLSpec (т. к. содержит детали, полезные при реализации):
https://www.khronos.org/registry/OpenGL/specs/gl/glspec21.pdf
https://www.khronos.org/registry/OpenGL/specs/gl/glspec44.core.pdf
Детали для DirectX:
https://microsoft.github.io/DirectX-Specs/
https://docs.microsoft.com/en-us/windows/desktop/direct3d11/d3d10… r-stage-rules

Рендеры Quake подробно разобраны в:
http://www.jagregory.com/abrash-black-book/
http://fabiensanglard.net/quakeSource/quakeSourceRendition.php
http://fabiensanglard.net/quake2/quake2_software_renderer.php


Известные software renderers

https://www.mesa3d.org/ - софтварная реализация OpenGL.

http://openswr.org/ - рендерер от Intel. Объединён с Mesa3D, в объявлении содержатся технические детали: https://lists.freedesktop.org/archives/mesa-dev/2015-October/097816.html

Microsoft предоставляет в составе Windows софтварную реализацию OpenGL 1.1.
Для DirectX есть refrast: refrast.cpp d3dref9.dll.

Также Microsoft предоставляет WARP:
https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/directx-warp

https://bellard.org/TinyGL/ - крохотный OpenGL-подобный рендерер.

https://github.com/google/swiftshader - популярный рендерер.

http://users.skynet.be/fquake/ - оптимизированный софтрендер для Quake. Обсуждение и детали: https://forum.beyond3d.com/threads/fast-software-renderer.46575/

http://www.radgametools.com/cn/pixofeat.htm - софтрендер от RAD Game Tools. Отчёт о реализации:
http://www.drdobbs.com/architecture-and-design/optimizing-pixomat… ors/184405765
http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405807
http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405848


gamedev.ru

3D Software rendering contest:
https://gamedev.ru/code/forum/?id=126749

Конкурс Retro software rendering:
https://gamedev.ru/projects/forum/?id=215799

Люди, со своим софтрендером:
1 frag / 2 deaths: https://gamedev.ru/flame/forum/?id=181583
Panzerschrek[CN]: http://www.gamedev.ru/projects/forum/?id=192643
Truthfinder: https://gamedev.ru/code/forum/?id=217881
122: https://gamedev.ru/flame/forum/?id=218277
return [](){}; https://gamedev.ru/flame/forum/?id=197340
ryzed https://gamedev.ru/projects/forum/?id=154409
Вий https://gamedev.ru/teams/forum/?id=160602


Разное

http://www.drdobbs.com/parallel/rasterization-on-larrabee/217200602

https://software.intel.com/en-us/articles/software-occlusion-culling

http://blog.simonrodriguez.fr/articles/18-02-2017_writing_a_small… renderer.html

https://nlguillemot.wordpress.com/2016/07/10/rasterizer-notes/

https://www.cbloom.com/3d/techdocs/pipeline.txt


#1
(Правка: 21:36) 21:33, 25 фев. 2019

Статьи:
Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками
Software renderer — 1: матчасть и Software renderer — 2: растеризация и интерполяция атрибутов
Introduction to Software-based Rendering: Simple Line Drawing
Трёхмерная графика с нуля. Часть 2: растеризация
Software Rasterization Algorithms for Filling Triangles

Сборники статей:
Software Rendering References
3D programming FAQ

Реализации:
Software rendering engine with PBR

FordPerfect
Если нужно как-то отредактировать или что-то убрать, то говори - сделаю. Если найду что-то новое и полезное - дополню.

> Люди, со своим софтрендером:
Как же хочется когда-то дополнить этот список своим ником...

#2
22:48, 25 фев. 2019

FordPerfect
Я игрового 3D софтрендера не писал, но кое-что есть для номинации "Люди, со своим софтрендером":
Rabbit
Ray Tracing

#3
22:55, 25 фев. 2019

Vlad2001_MFS
Спасибо.
> Software Rendering References
О, симпатичный список!

#4
23:01, 25 фев. 2019

Mikle
Я в качестве критерия достаточно произвольно взял "есть тема на форуме" (как показатель "достаточно самостоятельная вещь"); иначе всех участников конкурса софтрендеров (и старого - тоже) можно вписывать.

#5
23:11, 25 фев. 2019
Ну у меня тоже формально была: https://gamedev.ru/flame/forum/?id=197340
#6
0:08, 26 фев. 2019

Faceroll
Добавил.

Вий
Тема есть?

#7
9:06, 26 фев. 2019

FordPerfect
> Я в качестве критерия достаточно произвольно взял "есть тема на форуме"
Раз пошла такая пьянка ))
https://gamedev.ru/projects/forum/?id=154409

#8
(Правка: 9:37) 9:37, 26 фев. 2019

А кто нибудь замерял производительность софтрендера Андрюхи Ламота?

#9
9:43, 26 фев. 2019

ryzed
Точно, звыняй, что пропустил!

#10
9:47, 26 фев. 2019

Вий
А можно конкретнее - в котором из тамошних проектов 3D-софтрендер?

#11
14:29, 5 мар. 2019

Тем временем наткнулся:
http://threadlocalmutex.com/?p=144

#12
14:41, 5 мар. 2019

FordPerfect
клиплесс - с половинным делением?

#13
15:28, 5 мар. 2019

Хороший блог

Until ray tracing finally takes over for real-time rendering, which is usually only 10 years from now at any given point of time

#14
0:20, 6 мар. 2019

1 frag / 2 deaths
> клиплесс - с половинным делением?
В смысле?

Clipless - потому что в их алгоритме (растеризация прямо из однородных координат) нет 3D clipping (ни ближней плоскости, ни guard band).
Собственно это практический пример применения этого алгоритма (раньше я только статьи видел), хотя у них вроде гибрид.

Вот пример статьи:
https://gamedev.ru/code/forum/?id=238537&m=4825618#m7

Я сам особо не вникал.

Страницы: 1 2 314 15 Следующая »
ФлеймФорумПрограммирование