summaryrefslogtreecommitdiff
path: root/internal.h
Commit message (Collapse)AuthorAgeFilesLines
* implement a uniforms interface through Shadertab.rodri2024-10-011-0/+2
|
* implement a parser for a model(6). get rid of the libobj dependency.rodri2024-09-261-0/+5
|
* implement clipped drawing. take branching out of the upscaler loop.rodri2024-09-201-0/+1
| | | | | | the rasterizers now produce a bbox of used fragments/pixels that are unified at the end of every job/frame. we use that when drawing so only the part that was rasterized gets sent to devdraw.
* get rid of the turbopool (the experiment was futile.)rodri2024-09-191-22/+0
|
* a better turbopool.rodri2024-09-171-14/+9
|
* fix a use-after-free when profiling rasterizer times.rodri2024-09-101-0/+27
| | | | | | | | | | this commit also includes the turbo drawing pool. the experiment was successful in getting reasonable drawing times to a fullhd image, but the process causes glitches when moving the objects around, which is unacceptable. it's been commented out for now.
* remove unnecessary copying. profile individual stage procs.rodri2024-09-071-0/+7
|
* implement a general raster interface for the framebuffers.rodri2024-08-291-4/+15
| | | | | | | | | | | | | | | got a bit tired of having to add a ulong *buf every time i needed to get some data out of the shaders, so i made it possible to create as many extra buffers as needed, which then can be addressed from the fragment shader and drawn using the same drawing routines that were used for the color buffer. these so called Rasters are very similar to the OpenGL FBOs, in case you are familiar, but we address them by strings instead of numbers. and they can also be used as textures if you create one (see alloctexture) and then memdraw into it after every shot.
* replace f?(min|max) functions with type-agnostic macros.rodri2024-08-271-2/+0
| | | | | this simplifies the code and serves as another shadeop to use on application shaders.
* fix a double-free. add a generic value-swapping macro.rodri2024-08-051-3/+3
|
* make the depth buffer 32-bit.rodri2024-08-041-1/+1
|
* fix line interpolation during rasterization.rodri2024-08-021-1/+2
| | | | | | | vertex attributes were not being updated after clipping with their corresponding work rectangles, nor when reordering the points before rasterization, which caused serious artifacts.
* implement pixel art upscaling filters scale[23]x. tidy up some code.rodri2024-07-161-1/+7
|
* fix the geometry glitches when moving things around.rodri2024-07-131-1/+1
| | | | | | | | | | it's possible for interactive programs to keep updating the geometry of the scene during rendering, which caused primitives to look deformed or shattered in the final image. to avoid this we take a snapshot of the current state of things (scene and camera), and render based on that copy.
* clip: fix rectclipline.rodri2024-05-031-1/+1
| | | | | mixed up CLIP[TB] and the slope was being computed as an integer division, which caused artifacts.
* add a general primitive with support for points, lines and triangles.rodri2024-05-031-0/+14
| | | | | | | | also got rid of the dependency on OBJ for the entire renderer, instead letting the user load a Model from any given OBJ. this modularity will allow for other formats to be used in the same way, relying on a single, internal representation for the entire pipeline.
* render: add rasterizer init params and per-proc identification.rodri2024-04-241-8/+16
|
* replace the Triangle with a general purpose Primitive.rodri2024-04-161-1/+1
| | | | | this is only an structural replacement and doesn't add support for the other primitive types.
* implement a fully concurrent pipeline based on tiles.rodri2024-04-151-0/+18
| | | | | - 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-051-7/+0
| | | | | | | | | | > 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.
* implement a (partially) concurrent pipeline.rodri2024-03-251-3/+7
|
* add user-defined vertex attributes (varyings) and improve the interpolation ↵rodri2024-03-031-0/+7
| | | | code.
* lay out the grounds for a scene renderer.rodri2024-02-131-1/+1
| | | | | | also fixed an issue with cliptriangle() where an entire tri would get discarded if all its vertices were outside the frustum.
* improve coordinate transformations and fix projections.rodri2024-01-311-9/+1
| | | | | also got rid of Deco. there's no point in having that, just deal with image(6) files.
* import the new renderer and clean things up.rodri2024-01-301-0/+29
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.