Re:Finding your home in game graphics programming
by i45_n5 on Saturday January 01, 2022 @02:54PM
(#29761983)
Let's just say that I want to create text file with 3d coordinates of an object (cube or sphere),
and my software renderer shoould read this file and display it on the screen. And I can zoom in/out,
change coordinates of vertecies with a mouse, rotate and move it.
This cube can be wired or colored and if it wired I want to see which edges are visible and which are not.
And to render this cube I want to use only setpixel/drawline functions from win api or sdl.
Thanks for the links.
Re:Finding your home in game graphics programming
by pfranz on Saturday January 01, 2022 @05:20PM
(#29763462)
That sounds like a fun challenge. If you're constraining yourself to use as few libraries as possible, I'd go with OBJ [1] for the 3d mesh and PPM [2] for writing images. It's easy to implement a bare bones reader/writer and some OSes (like macOS) can show them in the file browser. Raytracing in One Weekend goes over PPM. There are a bunch of header-only libraries that handle different file formats like stb_image [3]. I usually end up using those when I start dealing with textures or UI elements. I don't use Windows so I haven't used their APIs for projects like this. I'd usually go for imgui or SDL (like you mentioned). tinyracaster, a sibling project of tinyrenderer, touches on those [4]. I liked LazyFoo's SDL tutorial [5]. Good luck!
[1] https://en.wikipedia.org/wiki/Wavefront_.obj_file
[2] https://en.wikipedia.org/wiki/Netpbm#PPM_example
[3] https://github.com/nothings/stb
It's been awhile, but a few common, imho approachable, sources are:
https://github.com/ssloy/tinyrenderer/wiki - a rasterizer that starts with drawing a line
https://raytracing.github.io/ - a basic raytracer that incrementally adds features
https://www.pbrt.org/ - I've heard good things from people who have gone through the whole book. I haven't taken the dive, but thumbed through it and jumped around.
I wouldn't dismiss realtime stuff, either. Often, the concepts are similar but the feedback loop is much faster. I liked the UE4 docs on shaders talking about pbrt and the simplifications they chose when implementing it. There's a bunch of resources out there. I don't think single source is comprehensive. I say, start with something simple and find resources on specific things you want to know more about.