Attempt to fix some woopsies
This commit is contained in:
@@ -80,10 +80,10 @@ public class MDICSectionRenderer extends AbstractSectionRenderer<MDICViewport, B
|
||||
|
||||
.compile();
|
||||
|
||||
private final GlBuffer uniform = new GlBuffer(1024).zero();
|
||||
private final GlBuffer uniform = new GlBuffer(1024).zero();//TODO move to viewport?
|
||||
|
||||
//TODO: needs to be in the viewport, since it contains the compute indirect call/values
|
||||
private final GlBuffer distanceCountBuffer = new GlBuffer(1024*4+100_000*4).zero();
|
||||
private final GlBuffer distanceCountBuffer = new GlBuffer(1024*4+100_000*4).zero();//TODO move to viewport?
|
||||
|
||||
//Statistics
|
||||
private final GlBuffer statisticsBuffer = new GlBuffer(1024).zero();
|
||||
|
||||
@@ -23,7 +23,6 @@ layout(binding = TRANSLUCENT_DISTANCE_BUFFER_BINDING, std430) restrict buffer Tr
|
||||
uint[] translucentCommandData;
|
||||
};
|
||||
|
||||
//Note: if i want reverse indexing i need to use the index buffer offset to offset
|
||||
void writeCmd(uint idx, uint instance, uint offset, uint quadCount) {
|
||||
DrawCommand cmd;
|
||||
cmd.count = quadCount * 6;
|
||||
@@ -44,7 +43,8 @@ void main() {
|
||||
|
||||
uvec3 rel = abs(extractPosition(meta)-(baseSectionPos>>detail));
|
||||
uint dist = (rel.x+rel.y+rel.z)<<detail;
|
||||
dist = TRANSLUCENT_WRITE_BASE-min(dist, TRANSLUCENT_WRITE_BASE);
|
||||
//The -1 is because we want 0 to TRANSLUCENT_WRITE_BASE, exclusive of ending, not inclusive (0->1023)
|
||||
dist = (TRANSLUCENT_WRITE_BASE-1)-min(dist, (TRANSLUCENT_WRITE_BASE-1));
|
||||
|
||||
uint drawPtr = atomicAdd(translucentCommandData[dist],1)+TRANSLUCENT_OFFSET;
|
||||
writeCmd(drawPtr, drawId, extractQuadStart(meta), meta.cntA&0xFFFF);
|
||||
|
||||
@@ -113,7 +113,8 @@ void main() {
|
||||
translucentCommandData[tp] = drawId;
|
||||
uvec3 absRel = abs(relative);
|
||||
uint distToCamera = (absRel.x+absRel.y+absRel.z)<<detail;
|
||||
distToCamera = TRANSLUCENT_WRITE_BASE-min(distToCamera, TRANSLUCENT_WRITE_BASE);
|
||||
//The -1 is because we want 0 to TRANSLUCENT_WRITE_BASE, exclusive of ending, not inclusive (0->1023)
|
||||
distToCamera = (TRANSLUCENT_WRITE_BASE-1)-min(distToCamera, (TRANSLUCENT_WRITE_BASE-1));
|
||||
atomicAdd(translucentCommandData[distToCamera], 1);
|
||||
#ifdef HAS_STATISTICS
|
||||
totalQuads += count;
|
||||
|
||||
@@ -87,7 +87,7 @@ void main() {
|
||||
memoryBarrierShared();
|
||||
barrier();
|
||||
|
||||
if (gl_SubgroupID == 0) {
|
||||
if (subgroupId == 0) {
|
||||
uint val = warpPrefixSum[gl_SubgroupInvocationID];
|
||||
subgroupBarrier();
|
||||
//Use warp to do entire add in 1 reduction
|
||||
|
||||
Reference in New Issue
Block a user