Devsh-Graphics-Programming / Nabla

Vulkan, OptiX and CUDA Interoperation Modular Rendering Library and Framework for PC/Linux/Android
http://devsh.eu
Apache License 2.0
475 stars 59 forks source link

Near Term Advanced Tasks #365

Open devshgraphicsprogramming opened 2 years ago

devshgraphicsprogramming commented 2 years ago

Font Rendering

Probably MSDF, how to generate glyphs from windows built-in fonts?

GPU k-Nearest-Neighbour Search Queries

Might be OK building the data structure on the CPU.

Voxelization

Hierarchical using Ray Query in AS vs Less Hierarchical Rasterization method.

Perfect Hashing (requires Voxelization)

Implement the Perfect Hashing paper, with out own spin of multi-scale perfect hashing (perfect hash voxel data with mip-maps).

IES profiles

Use a sampler1Darray or just a sampler2D to store isotropic IES emission profiles (do we need anisotropic?), pack all profiles for a scene into a single texture (since quantization will be identical).

Apply profile as a function of the NdotV (or in the case of anisotropic, TdotV and BdotV) at the point the emitter's surface is hit (allows for soft shadows and area emitters while also having a IES profile).

OBB Solid Angle Sampling

Build upon @sunho's work to get something usable for rejection sampling of arbitrary geometries.

OBB computation

Compute OBBs for Models.

kD-Tree Construction (requires OBB computation)

Split models using a kD-Tree into a collection of OBBs with less SAH than the OBB of the whole model.

Many Light Rendering (requires kD-Tree Construction and OBB Solid Angle sampling, might require Perfect Multi-Scale Hashing)

Find better ways to pick lights than just plain old CDF inversion according to surface area and emissive product.

Attenuated Shadow Rays (requires NEE and KHR_raytracing)

See if we can get perf gains (convergence per second) if we run anyhit queries with the single any-hit invocation per primitive and attenuate the contribution of the ray's payload by the hit primitive's BxDF "transmittance".

Basically stop thindielectric and roughdielectric from always killing our NEE rays.

ReSTIR on 3D Grid (requires Many Light Rendering and Perfect Hashing)

Basically Path Guiding for our NEE rays, also find a way to work the envmap product sampling into the mix.

devshgraphicsprogramming commented 7 months ago

New list as MSDF font, IES and OBB done

GPU k-Nearest-Neighbour Search Queries

Might be OK building the data structure on the CPU.

Voxelization

Hierarchical using Ray Query in AS vs Less Hierarchical Rasterization method.

Perfect Hashing (requires Voxelization)

Implement the Perfect Hashing paper, with out own spin of multi-scale perfect hashing (perfect hash voxel data with mip-maps).

OBB Solid Angle Sampling

Build upon @sunho's work to get something usable for rejection sampling of arbitrary geometries.

kD-Tree Construction (requires OBB computation)

Split models using a kD-Tree into a collection of OBBs with less SAH than the OBB of the whole model.

Many Light Rendering (requires kD-Tree Construction and OBB Solid Angle sampling, might require Perfect Multi-Scale Hashing)

Find better ways to pick lights than just plain old CDF inversion according to surface area and emissive product.

Attenuated Shadow Rays (requires NEE and KHR_raytracing)

See if we can get perf gains (convergence per second) if we run anyhit queries with the single any-hit invocation per primitive and attenuate the contribution of the ray's payload by the hit primitive's BxDF "transmittance".

Basically stop thindielectric and roughdielectric from always killing our NEE rays.

ReSTIR on 3D Grid (requires Many Light Rendering and Perfect Hashing)

Basically Path Guiding for our NEE rays, also find a way to work the envmap product sampling into the mix.