Nebula
Loading...
Searching...
No Matches
Terrain Namespace Reference

Detailed Description

The occupancy quad tree implements a tree which allows for a quick search.

The texture tile cache keeps track of which texture tiles should be used based on a last recently used heuristic.

Terrain rendering subsystem.

Classes

class  OccupancyQuadTree
struct  TerrainVert
struct  TerrainTri
struct  TerrainQuad
struct  TerrainBiomeId
struct  TerrainSetupSettings
struct  TerrainCreateInfo
struct  BiomeParameters
struct  BiomeMaterial
struct  BiomeMaterialBuilder
struct  BiomeSettings
struct  BiomeSettingsBuilder
struct  SubTextureUpdateJobUniforms
struct  SubTextureUpdateJobOutput
struct  PhysicalTileUpdate
struct  SubTexture
struct  SubTextureCompressed
class  TerrainContext
struct  IndirectionEntry
struct  TileCacheEntry
class  TextureTileCache

Enumerations

enum  BiomeLoadBits {
  AlbedoLoaded = 0x1 , NormalLoaded = 0x2 , MaterialLoaded = 0x4 , MaskLoaded = 0x8 ,
  WeightsLoaded = 0x10
}
enum class  SubTextureUpdateState : uint8_t {
  NoChange , Deleted , Created , Grew ,
  Shrank
}

Functions

 __ImplementContext (TerrainContext, TerrainContext::terrainAllocator)
void PackSubTexture (const SubTexture &subTex, TerrainSubTexture &compressed)
void UnpackPageDataEntry (uint *packed, uint &status, uint &subTextureIndex, uint &mip, uint &maxMip, uint &subTextureTileX, uint &subTextureTileY)
 Unpack from packed ushort vectors to full size.
template<typename T>
uint Upload (TerrainContext::TerrainInstanceInfo &instance, T *data, uint size, uint alignment)
void IndirectionUpdate (TerrainContext::TerrainInstanceInfo &instance, uint mip, uint physicalOffsetX, uint physicalOffsetY, uint indirectionOffsetX, uint indirectionOffsetY, uint subTextureTileX, uint subTextureTileY)
void IndirectionErase (TerrainContext::TerrainInstanceInfo &instance, uint mip, uint indirectionOffsetX, uint indirectionOffsetY, uint subTextureTileX, uint subTextureTileY)
void IndirectionMoveGrow (TerrainContext::TerrainInstanceInfo &instance, uint oldMaxMip, uint oldTiles, const Math::uint2 &oldCoord, uint newMaxMip, uint newTiles, const Math::uint2 &newCoord)
 Copies mip chain from old region to new region which is bigger by mapping mips 0..X to 1..X in the new region.
void IndirectionMoveShrink (TerrainContext::TerrainInstanceInfo &instance, uint oldMaxMip, uint oldTiles, const Math::uint2 &oldCoord, uint newMaxMip, uint newTiles, const Math::uint2 &newCoord)
 Copies mip chain from old region to new region which is smaller, mapping mips 0..X to 0..X-1 in the new region.
void IndirectionClear (TerrainContext::TerrainInstanceInfo &instance, uint mips, uint tiles, const Math::uint2 &coord)
 Clear old region.
void TerrainCullJob (const Jobs::JobFuncContext &ctx)

Variables

static uint colorIndex = 0
const uint IndirectionTextureSize = 2048
const uint SubTextureWorldSize = 64
const uint SubTextureMaxTiles = 256
const uint IndirectionNumMips = Math::log2(SubTextureMaxTiles) + 1
const float SubTextureRange = 300.0f
const float SubTextureSwapDistance = 10.0f
const float SubTextureFadeStart = 200.0f
const uint SubTextureMaxPixels = 65536
const uint LowresFallbackSize = 4096
const uint LowresFallbackMips = Math::log2(LowresFallbackSize) + 1
const uint PhysicalTextureTileSize = 256
const uint PhysicalTextureTileHalfPadding = 4
const uint PhysicalTextureTilePadding = PhysicalTextureTileHalfPadding * 2
const uint PhysicalTextureNumTiles = 32
const uint PhysicalTextureTilePaddedSize = PhysicalTextureTileSize + PhysicalTextureTilePadding
const uint PhysicalTextureSize = (PhysicalTextureTileSize) * PhysicalTextureNumTiles
const uint PhysicalTexturePaddedSize = (PhysicalTextureTilePaddedSize) * PhysicalTextureNumTiles
const uint TerrainShadowMapSize = 2048
struct { 
   CoreGraphics::ShaderId   Terrain::terrainShader 
   CoreGraphics::ShaderId   Terrain::tileShader 
   CoreGraphics::ShaderProgramId   Terrain::terrainShadowProgram 
   CoreGraphics::VertexLayoutId   Terrain::vlo 
   CoreGraphics::TextureId   Terrain::biomeWeights [Terrain::MAX_BIOMES] 
   Graphics::GraphicsEntityId   Terrain::sun 
   Math::vec4   Terrain::cachedSunDirection 
   bool   Terrain::shadowMapInvalid 
   bool   Terrain::updateShadowMap 
   Threading::CriticalSection   Terrain::syncPoint 
   CoreGraphics::ResourceTableId   Terrain::terrainShadowResourceTable 
   CoreGraphics::TextureId   Terrain::terrainPosBuffer 
   float   Terrain::mipLoadDistance = 1500.0f 
   float   Terrain::mipRenderPadding = 150.0f 
   SizeT   Terrain::layers 
   bool   Terrain::debugRender 
   bool   Terrain::renderToggle 
terrainState
struct { 
   CoreGraphics::ShaderProgramId   Terrain::terrainPrepassProgram 
   CoreGraphics::PipelineId   Terrain::terrainPrepassPipeline 
   CoreGraphics::ShaderProgramId   Terrain::terrainPageClearUpdateBufferProgram 
   CoreGraphics::ShaderProgramId   Terrain::terrainResolveProgram 
   CoreGraphics::PipelineId   Terrain::terrainResolvePipeline 
   CoreGraphics::ShaderProgramId   Terrain::terrainTileWriteProgram 
   CoreGraphics::ShaderProgramId   Terrain::terrainWriteLowresProgram 
terrainVirtualTileState
struct { 
   CoreGraphics::ShaderProgramId   Terrain::meshProgram 
   CoreGraphics::VertexAlloc   Terrain::vertexBuffer 
   CoreGraphics::VertexAlloc   Terrain::indexBuffer 
   CoreGraphics::ResourceTableId   Terrain::meshGenTable 
   CoreGraphics::BufferId   Terrain::patchBuffer 
   CoreGraphics::BufferId   Terrain::constantsBuffer 
   SizeT   Terrain::numTris 
   SizeT   Terrain::numPatches 
   bool   Terrain::updateMesh = false 
   std::function< void()>   Terrain::terrainSetupCallback 
   IndexT   Terrain::setupBlasFrame 
raytracingState
const uint SubTextureMaxUpdates = 1024
static const TileCacheEntry InvalidTileCacheEntry = TileCacheEntry{ 0x3FF, 0x7FF, 0x7FF, 0xFFFFFFFF }

Enumeration Type Documentation

◆ BiomeLoadBits

Enumerator
AlbedoLoaded 
NormalLoaded 
MaterialLoaded 
MaskLoaded 
WeightsLoaded 

◆ SubTextureUpdateState

enum class Terrain::SubTextureUpdateState : uint8_t
strong
Enumerator
NoChange 
Deleted 
Created 
Grew 
Shrank 

Function Documentation

◆ __ImplementContext()

Terrain::__ImplementContext ( TerrainContext ,
TerrainContext::terrainAllocator  )

◆ IndirectionClear()

void Terrain::IndirectionClear ( TerrainContext::TerrainInstanceInfo & instance,
uint mips,
uint tiles,
const Math::uint2 & coord )

Clear old region.

◆ IndirectionErase()

void Terrain::IndirectionErase ( TerrainContext::TerrainInstanceInfo & instance,
uint mip,
uint indirectionOffsetX,
uint indirectionOffsetY,
uint subTextureTileX,
uint subTextureTileY )

◆ IndirectionMoveGrow()

void Terrain::IndirectionMoveGrow ( TerrainContext::TerrainInstanceInfo & instance,
uint oldMaxMip,
uint oldTiles,
const Math::uint2 & oldCoord,
uint newMaxMip,
uint newTiles,
const Math::uint2 & newCoord )

Copies mip chain from old region to new region which is bigger by mapping mips 0..X to 1..X in the new region.

◆ IndirectionMoveShrink()

void Terrain::IndirectionMoveShrink ( TerrainContext::TerrainInstanceInfo & instance,
uint oldMaxMip,
uint oldTiles,
const Math::uint2 & oldCoord,
uint newMaxMip,
uint newTiles,
const Math::uint2 & newCoord )

Copies mip chain from old region to new region which is smaller, mapping mips 0..X to 0..X-1 in the new region.

◆ IndirectionUpdate()

void Terrain::IndirectionUpdate ( TerrainContext::TerrainInstanceInfo & instance,
uint mip,
uint physicalOffsetX,
uint physicalOffsetY,
uint indirectionOffsetX,
uint indirectionOffsetY,
uint subTextureTileX,
uint subTextureTileY )

◆ PackSubTexture()

void Terrain::PackSubTexture ( const SubTexture & subTex,
TerrainSubTexture & compressed )

◆ TerrainCullJob()

void Terrain::TerrainCullJob ( const Jobs::JobFuncContext & ctx)

◆ UnpackPageDataEntry()

void Terrain::UnpackPageDataEntry ( uint * packed,
uint & status,
uint & subTextureIndex,
uint & mip,
uint & maxMip,
uint & subTextureTileX,
uint & subTextureTileY )

Unpack from packed ushort vectors to full size.

◆ Upload()

template<typename T>
uint Terrain::Upload ( TerrainContext::TerrainInstanceInfo & instance,
T * data,
uint size,
uint alignment )

Variable Documentation

◆ biomeWeights

CoreGraphics::TextureId Terrain::biomeWeights[Terrain::MAX_BIOMES]

◆ cachedSunDirection

Math::vec4 Terrain::cachedSunDirection

◆ colorIndex

uint Terrain::colorIndex = 0
static

◆ constantsBuffer

CoreGraphics::BufferId Terrain::constantsBuffer

◆ debugRender

bool Terrain::debugRender

◆ indexBuffer

CoreGraphics::VertexAlloc Terrain::indexBuffer

◆ IndirectionNumMips

const uint Terrain::IndirectionNumMips = Math::log2(SubTextureMaxTiles) + 1

◆ IndirectionTextureSize

const uint Terrain::IndirectionTextureSize = 2048

◆ InvalidTileCacheEntry

const TileCacheEntry Terrain::InvalidTileCacheEntry = TileCacheEntry{ 0x3FF, 0x7FF, 0x7FF, 0xFFFFFFFF }
static

◆ layers

SizeT Terrain::layers

◆ LowresFallbackMips

const uint Terrain::LowresFallbackMips = Math::log2(LowresFallbackSize) + 1

◆ LowresFallbackSize

const uint Terrain::LowresFallbackSize = 4096

◆ meshGenTable

CoreGraphics::ResourceTableId Terrain::meshGenTable

◆ meshProgram

CoreGraphics::ShaderProgramId Terrain::meshProgram

◆ mipLoadDistance

float Terrain::mipLoadDistance = 1500.0f

◆ mipRenderPadding

float Terrain::mipRenderPadding = 150.0f

◆ numPatches

SizeT Terrain::numPatches

◆ numTris

SizeT Terrain::numTris

◆ patchBuffer

CoreGraphics::BufferId Terrain::patchBuffer

◆ PhysicalTextureNumTiles

const uint Terrain::PhysicalTextureNumTiles = 32

◆ PhysicalTexturePaddedSize

const uint Terrain::PhysicalTexturePaddedSize = (PhysicalTextureTilePaddedSize) * PhysicalTextureNumTiles

◆ PhysicalTextureSize

const uint Terrain::PhysicalTextureSize = (PhysicalTextureTileSize) * PhysicalTextureNumTiles

◆ PhysicalTextureTileHalfPadding

const uint Terrain::PhysicalTextureTileHalfPadding = 4

◆ PhysicalTextureTilePaddedSize

const uint Terrain::PhysicalTextureTilePaddedSize = PhysicalTextureTileSize + PhysicalTextureTilePadding

◆ PhysicalTextureTilePadding

const uint Terrain::PhysicalTextureTilePadding = PhysicalTextureTileHalfPadding * 2

◆ PhysicalTextureTileSize

const uint Terrain::PhysicalTextureTileSize = 256

◆ [struct]

struct { ... } Terrain::raytracingState

◆ renderToggle

bool Terrain::renderToggle

◆ setupBlasFrame

IndexT Terrain::setupBlasFrame

◆ shadowMapInvalid

bool Terrain::shadowMapInvalid

◆ SubTextureFadeStart

const float Terrain::SubTextureFadeStart = 200.0f

◆ SubTextureMaxPixels

const uint Terrain::SubTextureMaxPixels = 65536

◆ SubTextureMaxTiles

const uint Terrain::SubTextureMaxTiles = 256

◆ SubTextureMaxUpdates

const uint Terrain::SubTextureMaxUpdates = 1024

◆ SubTextureRange

const float Terrain::SubTextureRange = 300.0f

◆ SubTextureSwapDistance

const float Terrain::SubTextureSwapDistance = 10.0f

◆ SubTextureWorldSize

const uint Terrain::SubTextureWorldSize = 64

◆ sun

◆ syncPoint

Threading::CriticalSection Terrain::syncPoint

◆ terrainPageClearUpdateBufferProgram

CoreGraphics::ShaderProgramId Terrain::terrainPageClearUpdateBufferProgram

◆ terrainPosBuffer

CoreGraphics::TextureId Terrain::terrainPosBuffer

◆ terrainPrepassPipeline

CoreGraphics::PipelineId Terrain::terrainPrepassPipeline

◆ terrainPrepassProgram

CoreGraphics::ShaderProgramId Terrain::terrainPrepassProgram

◆ terrainResolvePipeline

CoreGraphics::PipelineId Terrain::terrainResolvePipeline

◆ terrainResolveProgram

CoreGraphics::ShaderProgramId Terrain::terrainResolveProgram

◆ terrainSetupCallback

std::function<void()> Terrain::terrainSetupCallback

◆ terrainShader

CoreGraphics::ShaderId Terrain::terrainShader

◆ TerrainShadowMapSize

const uint Terrain::TerrainShadowMapSize = 2048

◆ terrainShadowProgram

CoreGraphics::ShaderProgramId Terrain::terrainShadowProgram

◆ terrainShadowResourceTable

CoreGraphics::ResourceTableId Terrain::terrainShadowResourceTable

◆ [struct]

struct { ... } Terrain::terrainState

◆ terrainTileWriteProgram

CoreGraphics::ShaderProgramId Terrain::terrainTileWriteProgram

◆ [struct]

struct { ... } Terrain::terrainVirtualTileState

◆ terrainWriteLowresProgram

CoreGraphics::ShaderProgramId Terrain::terrainWriteLowresProgram

◆ tileShader

CoreGraphics::ShaderId Terrain::tileShader

◆ updateMesh

bool Terrain::updateMesh = false

◆ updateShadowMap

bool Terrain::updateShadowMap

◆ vertexBuffer

CoreGraphics::VertexAlloc Terrain::vertexBuffer

◆ vlo