summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* render: add rasterizer init params and per-proc identification.rodri2024-04-243-26/+38
|
* doc: add some schematics about the overall architecture.rodri2024-04-243-57/+715
|
* render: use the primitive's bbox to check for tile membership.rodri2024-04-181-9/+12
| | | | | | this fixes a bug i introduced with the fully concurrent pipeline, where instead of testing whether the triangle *crossed* any of the tiles, i checked whether any of the points *were inside*.
* render: make sure the last tile fills the screen.rodri2024-04-181-0/+2
|
* replace the Triangle with a general purpose Primitive.rodri2024-04-164-104/+118
| | | | | this is only an structural replacement and doesn't add support for the other primitive types.
* render: split tiles vertically instead of horizontally.rodri2024-04-151-4/+4
| | | | | this makes more sense memory-wise, and it also fixes a clipping glitch that was occurring at tile boundaries.
* add some instrumentation to measure pipeline stage time.rodri2024-04-153-2/+49
|
* implement a fully concurrent pipeline based on tiles.rodri2024-04-154-40/+204
| | | | | - got rid of the z-buffer lock to avoid contention. - little improvements to fb.c
* simplify the job scheduler. correct two mistakes regarding the Viewport.rodri2024-04-056-92/+49
| | | | | | | | | | > They made two mistakes. they hanged the wrong man and they didn't finish the job. so Clint Eastwood came back to kick my ass. the mistakes in question were that the Viewport shouldn't know about double buffering, conceptually it has a framebuffer and that's it. the second one was passing it to the renderer, when the renderer couldn't care less about what a viewport is.
* scene: correct blatant use-after-free.rodri2024-04-031-2/+3
|
* scene: add a way to remove entities and fix the clearscene routine.rodri2024-04-032-1/+12
|
* add trivial nil checks to some of the cleanup procedures.rodri2024-04-032-1/+10
|
* scene: implement full cleanup procedures.rodri2024-04-032-2/+22
|
* scene: fix uninitialized nents field.rodri2024-04-031-0/+1
|
* viewport: add a way to access front and back buffers.rodri2024-04-013-2/+10
|
* can't always rely on screen being there.rodri2024-04-011-1/+1
|
* pass a Viewport in the Renderjob instead of a fb.rodri2024-03-264-6/+15
| | | | | do the frame buffer clearing and swapping as part of the rendering process, not within shootcamera.
* implement a (partially) concurrent pipeline.rodri2024-03-254-134/+234
|
* use the new libgeometry berp routines. add a frame counter to the camstats.rodri2024-03-215-19/+16
|
* pass material properties to the fshader.rodri2024-03-062-1/+3
| | | | | this way users can refer to per-surface material features when shading pixels.
* make the fshader return a Color instead of a Memimage. clean things up.rodri2024-03-063-30/+41
|
* add a texture sampler with nearest and bilinear routines.rodri2024-03-064-42/+191
| | | | | | pass the material reference along with the vertices. also implemented back-face culling, but it's disabled for now.
* add user-defined vertex attributes (varyings) and improve the interpolation ↵rodri2024-03-035-72/+232
| | | | code.
* have separate routines for drawing and memdrawing.rodri2024-02-274-3/+34
|
* interpolate every vertex attribute when clipping and during rasterization.rodri2024-02-252-23/+43
| | | | added parameters necessary to implement the Phong shading model.
* add initial support for OBJMaterial properties.rodri2024-02-213-10/+39
|
* implement general polygon fan triangulation.rodri2024-02-151-61/+48
|
* pass an entire entity to the shader unit. fix a bug in cliptriangle.rodri2024-02-142-26/+22
| | | | | | | | | | an entity is passed instead of a model so we can access its frame of reference to perform the model-to-world transformation. the bug in cliptriangle was due to sd[01] being declared as static which, when rendering multiple entities, was causing d0 = d1, which led to division-by-zero.
* lay out the grounds for a scene renderer.rodri2024-02-136-137/+234
| | | | | | also fixed an issue with cliptriangle() where an entire tri would get discarded if all its vertices were outside the frustum.
* completed homogeneous clipping procedure.rodri2024-02-122-39/+101
|
* initial clipping implementation. (not fully working yet)rodri2024-02-101-67/+53
|
* load XRGB32 textures.rodri2024-02-081-6/+11
|
* implement perspective-correct attribute interpolation.rodri2024-02-071-13/+146
| | | | | | | | | also committing unfinished code for the clipping algorithm. references: - Kok-Lim Low, “Perspective-Correct Interpolation”, 2002 - https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation/perspective-correct-interpolation-vertex-attributes.html - https://www.rose-hulman.edu/class/csse/csse351-abet/m10/triangle_fill.pdf, p. 23
* document part of the pipeline. prepare the grounds for triangle clipping.rodri2024-02-032-37/+82
|
* only create existing indices during quad triangulation.rodri2024-02-011-24/+32
|
* improve coordinate transformations and fix projections.rodri2024-01-315-93/+42
| | | | | also got rid of Deco. there's no point in having that, just deal with image(6) files.
* make the vertex shader process actual vertices.rodri2024-01-303-8/+5
|
* update readme.rodri2024-01-301-0/+3
|
* import the new renderer and clean things up.rodri2024-01-3013-225/+895
| | | | | | | | | | | | i integrated the renderer i've been developing on the tinyrend repo and got rid of a bunch of stuff that's no longer necessary. also began structuring things to fit the new interface i have in mind. there are still some artifacts with the projection xforms that cause issues with clipping and division by zero.
* use the system-wide libgeometry.rodri2024-01-261-3/+1
|
* add a line clipping procedure based on the Liang-Barsky algorithm. (thanks ↵rodri2021-07-182-1/+64
| | | | jmi2k!)
* move the edge function out into libgeometry.rodri2020-07-051-30/+0
|
* bring flat triangle rasterization back, with some goodies for future shading ↵rodri2020-06-294-1/+88
| | | | work. add uv coordinates to the vertex.
* transcribe macros into actual functions. remove unused memdraw code.rodri2020-04-282-37/+55
|
* standalone version release.rodri2020-04-179-0/+904