Evo kako se to danas radi:
1. Spremi geometriju i uploaduj sve sto mozes sa sto manje batcheva na GPU (idealno, kao DirectStorage zaobilazeci skoro sve sta mozes na CPU-u i dekompresujes na GPU)
2. Sibni sve shadere na GPU, pripremi komande tako da minimizujes broj poziva drajveru i broj PCIe transakcija
Evolucija:
1990-te (kraj): render je state masina, ti sve lagano crtkas malim pozivima za svaku tacku, boju, promenu flag-ova... transformacija i rasterizacija u softveru
1990-te (kraj): isto kao gore, sam sto neki elementi (rasterizacija) ponekad trce na grafickoj kartici
2000-te (pocetak): graficka kartica postaje GPU, pocinje da radi transformaciju geometrije i osvetljenje - i dalje je CPU glavni i orkestrira, graficki prolaz je potpuno fiksan (fixed function pipeline), postepene inovacije po pitanju sencenja (razne mape uz pomoc tekstura za imitaciju senki, vode, ...)
2000-te (sredina): pojava shader-a - pocetci mogucnosti programiranja procesa sencenja, za pocetak kroz per-vertex i per-fragment/pixel procesiranje, a onda polako i mogucnost poboljsnaja nivoa detalja kroz geometrijske shader-e (shader moze da generise nove detalje)
2000-te: (kraj): umesto fisiriranog pipelina je sada sve pod programerskom kontrolom, i dalje imas dosta apstrakcija i mnoge stvari treba da radis na propisan nacin ako hoces performanse, ali mozes i drugacije
2010-te: (pocetak): compute shader-i (dx 2009, ogl 2012) sa kojima imas jos vise fleksibilnosti, nisu deo grafickog pipeline-a ali mozes da ih upotrebljavas u grafici bez dr*anja sa CUDA/OCL/... kontekstima
2010-te: (sredina): primeceno da zbog enormne istorije tradicionalni API-ji imaju limite kad su performanse u pitanju, re-write kroz Vulkan (Khronos), Metal (Apple) i DirectX 12 (Microsoft) - novi API-ji su potpuno GPU-centricni i nizeg nivoa gde programer ima mnogo vise kontrole
2010-te: (kraj): ray/path tracing akcelerisani na GPU, napredni AA algoritmi za upscaling, koriscenje AI/ML za poboljsanje detalja, ...
Za crtanje par trouglova, ovo je verovatno overkill, ali za bilo sta komplikovano je drasticno efikasnije.
Pogledaj, recimo, kako Dear ImGui (
https://github.com/ocornut/imgui) optimizuje pun q malih operacija i sve batch-uje na GPU
Ili kako da iscrtavas point cloud-ove sa milijardama tacaka:
https://github.com/m-schuetz/compute_rasterizer
NVIDIA tech demos je isto dobar pogled na istoriju grafike - skroluj na dole = ides u proslost:
https://www.nvidia.com/en-us/gforce/community/demos/
I, naravno, mozes da vidis sta klinci (i ne samo klinci) rade sa svim zahebancijama na
https://www.shadertoy.com/ - gde mozes sam instant da probas shader-e. Ovo je spiritualni naslednik nekadasnje 4K/64K demo/intro scene :-)
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos:
http://www.digicortex.net/node/17 Gallery:
http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! -
https://github.com/psyq321/PowerMonkey