summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* fb: a better clipped drawing procedure.rodri2024-08-191-14/+12
|
* correct the light types constants.rodri2024-08-172-4/+4
|
* unify drawing routines and add clipped fb drawing support.rodri2024-08-174-33/+70
| | | | | | now changing the viewport offset will correctly show the portion of the framebuffer that's visible, including support for upscaled views.
* color: rgba2xrgb ≠ swabl.rodri2024-08-131-2/+2
|
* fixes.rodri2024-08-132-3/+3
|
* fix FPINVAL error. knob for fb clear color. general improvements.rodri2024-08-115-10/+23
|
* experimental A-buffer implementation.rodri2024-08-104-15/+132
| | | | | | | | | very simple, without anti-aliasing, made for getting OIT (order independent transparency) rendering of arbitrary objects. also added switches for blending, depth testing and the A-buffer to the camera.
* doc: new content.rodri2024-08-073-1139/+1334
|
* update the mkfile.rodri2024-08-071-0/+1
|
* offset fb during drawing based on viewport config. move OBJ-related ↵rodri2024-08-075-315/+359
| | | | procedures to its own unit.
* fix a double-free. add a generic value-swapping macro.rodri2024-08-055-55/+13
|
* make the depth buffer 32-bit.rodri2024-08-046-8/+9
|
* fix line interpolation during rasterization.rodri2024-08-024-7/+46
| | | | | | | vertex attributes were not being updated after clipping with their corresponding work rectangles, nor when reordering the points before rasterization, which caused serious artifacts.
* fb: fix the destination drawing rectangle.rodri2024-08-021-2/+2
|
* add a viewport upscale filters interface.rodri2024-08-023-44/+109
|
* doc: write about the scene, the viewport. organize things better.rodri2024-07-233-1079/+1314
|
* doc: write about the renderer, with a little introduction.rodri2024-07-223-612/+1229
|
* reduce the volume of Camera.times records. clean up.rodri2024-07-203-20/+19
|
* implement pixel art upscaling filters scale[23]x. tidy up some code.rodri2024-07-164-13/+100
|
* fix stack overflow, skybox fov sensibility and scene duplication.rodri2024-07-154-15/+30
| | | | | | | | | putting the duplicate camera in a local variable turned out to be a bad idea. bring the dynamic version back. the skybox rendering was affected by the camera fov, which made it look like it was not really at infinity, so set it always to 90°.
* initial viewport upscaling support.rodri2024-07-143-2/+76
|
* small improvements and a skybox bugfix.rodri2024-07-143-18/+15
|
* new camera interface.rodri2024-07-133-20/+74
|
* enable culling and add a camera knob for it.rodri2024-07-132-15/+19
|
* fix the geometry glitches when moving things around.rodri2024-07-138-145/+260
| | | | | | | | | | 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.
* small improvements.rodri2024-07-124-33/+37
|
* texture nomenclature changes. fb format RGBA → XRGB.rodri2024-07-094-15/+15
| | | | | | we are still doing alpha blending, so we use the X chan internally, but we don't care about it when (mem)drawing to the screen.
* create a new texture interface.rodri2024-07-054-45/+86
|
* rough color space conversion implementation.rodri2024-07-045-15/+150
| | | | | | | | colors are now properly processed in linear RGB space for lighting, shading and blending. sRGB is assumed for any texture sampled and the destination framebuffer. it's not perfect, but it does the job for now.
* render: don't overwrite the vertex colors with white. report alien prims.rodri2024-06-161-3/+2
|
* fix the barycoords routine to avoid reporting false degenerates.rodri2024-06-143-1/+43
| | | | added a normals buffer for debugging.
* replace the Memimage color buffer with a ulong* one. some fixes.rodri2024-06-135-38/+39
|
* add spotlight params and a light color shading routine. other things.rodri2024-06-106-18/+48
| | | | | | among these other things are clamping the color channels to [0,1] internally, and adding a modulation function for mixing colors/points.
* add cubemaps.rodri2024-06-067-5/+220
|
* add a tangent parameter for normal mapping, and a world2model xform.rodri2024-06-044-9/+31
|
* add a normal map property to Material.rodri2024-05-282-0/+8
|
* replace the Framebufctl's Lock with a QLock.rodri2024-05-233-7/+8
| | | | this provides fair scheduling, minimizing contention.
* fix line rasterization.rodri2024-05-213-18/+31
|
* fix the perspective projection and add inverse xform functions.rodri2024-05-204-112/+177
|
* render: improve line raster (not fixed yet). also tag jobs with an id.rodri2024-05-172-7/+9
|
* doc: correct the indices to make things simpler.rodri2024-05-143-27/+27
|
* add a name property to Material.rodri2024-05-122-1/+10
|
* scene: free model materials during cleanup.rodri2024-05-101-0/+2
|
* clip: fix rectclipline.rodri2024-05-033-9/+13
| | | | | mixed up CLIP[TB] and the slope was being computed as an integer division, which caused artifacts.
* clip: avoid division by zero.rodri2024-05-031-2/+2
|
* add a general primitive with support for points, lines and triangles.rodri2024-05-0310-318/+863
| | | | | | | | 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-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
|