Skip to content

Release v1.12.20

Choose a tag to compare

@github-actions github-actions released this 23 Apr 21:03
· 51 commits to main since this release
448d2f4

What's Changed

Branch: Addition
PR: #67 — Addition: Renderer Performance Boost
Author: @AidenKielby
Commit: 448d2f4


Pull Request Details

Addition: Renderer Performance Boost

The rasterization pipeline has been refactored to eliminate unnecessary GPU → CPU → GPU transfers. Previously, rendered data was read back to the CPU and then re-uploaded via Pygame, introducing avoidable overhead.

This has been replaced with a fully GPU-resident workflow: the final render target remains on the GPU and is presented directly using a fullscreen quad. This significantly improves performance and aligns the renderer with modern graphics pipeline practices.

Additionally, the CustomShader interface has been updated to enforce explicit binding conventions:

Output texture (destTex) must be bound to binding = 1
Binding of the input texture (srcTex) is optional, but if used, must be bound to binding = 0

Example:

#version 430
layout(local_size_x = 16, local_size_y = 16) in;

layout(rgba32f, binding = 1) uniform image2D destTex; // Note the binding to #1
uniform sampler2D srcTex;

void main() {
    ivec2 px = ivec2(gl_GlobalInvocationID.xy);
    ivec2 dims = imageSize(destTex);

    if (px.x >= dims.x || px.y >= dims.y) {
        return;
    }

    vec4 srcCol = texelFetch(srcTex, px, 0);

    imageStore(destTex, px, vec4(1-srcCol.x, 1-srcCol.y, 1-srcCol.z, srcCol.w));
}

Install

pip install aiden3drenderer==1.12.20

Example (Python)

from aiden3drenderer import Renderer3D

renderer = Renderer3D()
# ...

Full Changelog: v1.12.19...v1.12.20