This commit is contained in:
mcrcortex
2024-05-07 09:49:04 +10:00
parent abbe1c21ed
commit 01d5436e2d
3 changed files with 0 additions and 93 deletions

View File

@@ -1,32 +0,0 @@
#version 460
layout(local_size_x=8)
//NEW IDEAm use the depth buffer directly to compute the lod level needed to cover it
//Location in world space up to 2x2x2 block size resolution
#define OctNodeTask uint64_t
//First 32 bits are the start of child
// next 16 bits are split into 8 pairs, each pair specifies the type of the subnode (air/empty, partial, full)
//Tasks are of size uint64_t
void main() {
while (true) {
barrier();
}
}

View File

@@ -1,37 +0,0 @@
#version 460
#define WAVE_SIZE 64
layout(local_size_x=WAVE_SIZE)
#define WorkTask
//or make the shape 4x2x4 which has a local size of 32
//The work queue is a circular queue with collision detection and abortion
struct WorkQueueHeader {
uint queueSizeBits;
uint start;
uint end;
uint _padd;
};
//Task is a uint32,
//The idea is to use persistent threads + octree culling to recursivly find bottom level sections that satisfy a pixel density requirement
// given a matrix
void main() {
while (true) {
}
}
//Idea cull/recuse in a manor of 4x4x4 cube (64 bits), have an existance mask per section so that unnessasery computation isnt done on air subsections
// if a section is fully or partially visible and its aabb does not occupy 1 pixel (or a subset of some specified area/density)
// then enqueue that section as a job
// once a node has reached its tail ending, check if its loaded or not, if not, request it to be loaded
// note that the cpu side can discard sections if they are superceeded by a higher level lod load request etc

View File

@@ -1,24 +0,0 @@
#version 460
layout(local_size_x=32)
//Works in multiple parts
// first is a downwards traversal from a base level that finds all the bottom level pixel detail AABBs
// task queue is firstly filled with large visible AABB's from rastered occlusion
//
// each node metadata contains the position in 3d space relative to the toplevel node
// an offset into the datapool for the child nodes, and union between (a bitmsk of if a child node is full, empty, or mixed (or unloaded))
// and a pointer to render metadata for meshlets
//The overarching idea is to have meshlets be automatatically selected based on the resulting pixel size/density
// after 3d projection, we dont want subpixel triangles and we want to be able to automatically account for the
// perspective warp on the edges of the screen (e.g. high fov == higher density at the center of the screen)
// from this, the gpu can then (if they are not present) request meshlets be added and thereby automatic lod selection
// and dynamic building resulting in possibly O(fast) rendering
void main() {
while (true) {
barrier();
}
}