branchrust_reboot/main/terrain_renderercancel
52 Commits over 212 Days - 0.01cph!
Fix height sampling on some terrain sizes, add tooltips to convars, fix server compile errors, set terrain prefab to craggy, set default global lod scale to 2
Add ConVar to use MeshColliders for terrain cells, add editor buttons to create mesh colliders, clean up unused code, and put debug info behind flags.
Clean up editor, fix LOD extent validation, fix editor defaults causing 0 LOD extents, and set new defaults
Terrain cell mesh colliders with separate cellsize from rendering
Terrain mesh collision cells wip
- TerrainHoles support
- Add compute blit when using R16 format
- Only create R16 map when enabled
- Change low res heightmap to use full uint16 range
- Initialise groupthread min and max at texture bounds to fix border values
Terrain collision update tests
- Implement CPU heightmap functions in GPU compute (HeightMapApply), should remove need for map sync
- Profile tests for AddHeight and SetHeightsDelayLOD using a limited texel area
- Add option to use terrain R16 maps, and the active terrain render texture
- Use R16 UAV heightmap for compute and terrain vertex shader
- Improve camera culling by including min/max height of cell
Add alternate slanted grid topology option
Fix culling radius calculation
Fix LOD scaling cell positions for culling
Testing changing terrainData heights with different apply methods, and using terrainData heightmap RenderTexture
- Swap terrain convar lodFactor with lodGlobalScale
- GlobalScale effects cell counts between each LOD level
- Add LOD cell extent sliders for each individual LOD level
- Simplify instance offsets calc
- Adjust culling for new terrain cell sizes
- Fix lod border cells, and negative cells
- Change mesh master to only 3 submeshes
- Change instance offsets and arguments for new approach
- Culling toggle in editor
- Fix issues with cell offsets
- Fix grid offsets with negatives
- Change dispatch thread size
Split grid sideblocks to simplify thread to coords
Nested grid changes:
- Add scale to instance data
- Move rotation float2 to uint
- Handle finding grid coords in nested grid with thread id
- Find LOD using precomputed offsets instead of distances
- Adjust grids by offset from LOD0 grid
Terrain renderer editor script
Add terrain testing scene
Add mesh spawn debug option
Change vertex density slider to int
Switch to linear sampling where density is increased
Fix edge length calculation, alignment actually fixed
Align terrain vertices with texel corner to match unity
Move ConVars to terrain ConVars
Add terrain renderer to WorldSetup
Add terrain mesh culling toggle
Improve editor terrain view
Snap render distance to cell to make bounds consistent
FIx incorrect LOD borders at last LOD
Change position operations to integer coords to solve lod border issues with some terrain sizes
Setup terrain renderer to run in editor for scene view and game view cameras
Make low res heightmap size dynamic to handle different terrain sizes
Add profiling marker to terrain render
Use min and max for coarse terrain height shadow culling and re-enabled camera and shadowing culling.
Add vertex density slider for terrain detail
Fix grid position alignment issues with some cell sizes
Editor recreates terrain buffers on inspector changes
Fix instance offsets, and LOD border calculations when using some LOD distance values
Add debug validation toggle to system
Handle terrain detail when using narrow FOVs by moving the centre point along the forward direction but clamped to the first LOD boundry
Fix render bounds flooring
Fix corner LOD edge detection
LODs are now seamless
Fix incorrect edgeFlags, rotation, and flipped border meshes
Add colour to instance data for debugging, wip rotation handling for seamless LOD borders
Fix cell mesh sizes at each LOD
Fix mesh create errors, change from vertCount to vertLOD index for choosing lowest LOD vertex count
Fix mesh creation with border meshes
Calculate instance offsets when LOD factor is updated
Combine per LOD compute into singular dispatch
Calculate cellsize based on vertex count and texels per unit
Use max axis for LOD distance
Use camera position snapped to half cell increments for LOD distance
Change LOD falloff to log function
Enable shore wetness
Compute heightmap into small height max map texture
Separate terrain compute bounds into render bounds and camera bounds for shadow cull testing
Consider shadow casting in terrain culling step using a raycast with max region height
Terrain shadow culling wip, and merge fix
Fix terrain shadows, add vertex normal map sampling, use terrain heightmap instead of height slope map, change LOD slider into min/max slider for more control, and add convar for terrain renderer toggling.