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

Detailed Description

A quad tree designed to return regions of free 2D space.

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

Terrain rendering subsystem.

Classes

struct  [struct].raytracingState
struct  [struct].terrainState
struct  [struct].terrainVirtualTileState
struct  BiomeMaterial
struct  BiomeMaterialBuilder
struct  BiomeParameters
struct  BiomeSettings
struct  BiomeSettingsBuilder
struct  IndirectionEntry
class  OccupancyQuadTree
struct  PhysicalTileUpdate
struct  SubTexture
struct  SubTextureCompressed
struct  SubTextureUpdateJobOutput
struct  SubTextureUpdateJobUniforms
struct  TerrainBiomeId
class  TerrainContext
struct  TerrainCreateInfo
struct  TerrainQuad
struct  TerrainSetupSettings
struct  TerrainTri
struct  TerrainVert
class  TextureTileCache
struct  TileCacheEntry

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  terrainState
struct  terrainVirtualTileState
struct  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

◆ colorIndex

uint Terrain::colorIndex = 0
static

◆ 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

◆ LowresFallbackMips

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

◆ LowresFallbackSize

const uint Terrain::LowresFallbackSize = 4096

◆ 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

◆ raytracingState

struct Terrain::[struct].raytracingState Terrain::raytracingState

◆ 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

◆ TerrainShadowMapSize

const uint Terrain::TerrainShadowMapSize = 2048

◆ terrainState

struct Terrain::[struct].terrainState Terrain::terrainState

◆ terrainVirtualTileState

struct Terrain::[struct].terrainVirtualTileState Terrain::terrainVirtualTileState