Rem
This commit is contained in:
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user