Optimized uv wrapping, no fmod, interpolating normals, Smooth shading, Multiple scenes, Options in UI

This commit is contained in:
Krzosa Karol
2022-03-03 09:23:00 +01:00
parent 29123d7ea6
commit af822c4dbe
5 changed files with 201 additions and 121 deletions

View File

@@ -19,30 +19,33 @@
- [x] Alpha blending
- [x] Premultiplied alpha
- [x] Merge with base
- [ ] Lightning
- [x] GLOBAL Ilumination
- [ ] Phong
- [ ] Use all materials from OBJ
- [ ] Point light
- [ ] Fill convention
- [ ] Antialiasing (seems like performance gets really bad with this)
- [x] LookAt Camera
- [x] FPS Camera
- [ ] Quarternions for rotations
- [x] Reading OBJ models
- [ ] Reading more OBJ formats
- [x] Reading OBJ .mtl files
- [x] Loading materials
- [x] Rendering textures obj models
- [x] Reading complex obj models (sponza)
- [ ] Fix sponza uv coordinates
- [ ] Reading PMX files
- [ ] Rendering multiple objects, queue renderer
- [x] Simple function to render a mesh
- [x] Fix sponza uv coordinates - the issue was uv > 1 and uv < 0
- [x] Clipping
- [x] Triagnle rectangle bound clipping
- [x] A way of culling Z out triangles
- [x] Simple test z clipping
- [x] Maybe should clip a triangle on znear zfar plane?
- [x] Maybe should clip out triangles that are fully z out before draw_triangle
- [ ] Subpixel precision of triangle edges
- [ ] Effects!!!
- [ ] Lightning
- [x] GLOBAL Ilumination
- [ ] Phong
- [ ] Use all materials from OBJ
- [ ] Point light
- [ ] Reading PMX files
- [ ] Rendering multiple objects, queue renderer
- [x] Simple function to render a mesh
- [x] Simple profiling tooling
- [x] Statistics based on profiler data
- [x] Find cool profilers - ExtraSleepy, Vtune
@@ -56,7 +59,11 @@
- [ ] Multithreading
- [x] Text rendering
- [ ] Basic UI
- [ ] UI
- [x] Labels
- [x] Settings variables
- [ ] Sliders
- [ ] Groups
- [x] Gamma correct alpha blending for rectangles and bitmaps
- [ ] Plotting of profile data
- [x] Simple scatter plot
@@ -84,7 +91,7 @@ the box is clipped to the image metrics - 0, 0, width, height.
### Resources that helped me build the rasterizer (Might be helpful to you too):
* Algorithm I used for triangle rasterization by Juan Pineda: https://www.cs.drexel.edu/~david/Classes/Papers/comp175-06-pineda.pdf
* Algorithm I used for triangle rasterization by Juan Pineda is described in paper called "A Parallel Algorithm for Polygon Rasterization"
* Casey Muratori's series on making a game from scratch(including a 2D software rasterizer(episode ~82) and 3d gpu renderer): https://hero.handmade.network/episode/code#
* Fabian Giessen's "Optimizing Software Occlusion Culling": https://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/
* Fabian Giessen's optimized software renderer: https://github.com/rygorous/intel_occlusion_cull/tree/blog/SoftwareOcclusionCulling
@@ -95,9 +102,6 @@ the box is clipped to the image metrics - 0, 0, width, height.
* A bunch of helpful notes and links to resources: https://nlguillemot.wordpress.com/2016/07/10/rasterizer-notes/
* Very nice paid course on making a software rasterizer using a scanline method: https://pikuma.com/courses/learn-3d-computer-graphics-programming
* Reference for obj loader: https://github.com/tinyobjloader/tinyobjloader/blob/master/tiny_obj_loader.h
*
*
*
### To read