Release v1.12.20
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.20Example (Python)
from aiden3drenderer import Renderer3D
renderer = Renderer3D()
# ...Full Changelog: v1.12.19...v1.12.20