Texture Splating Utility
Release 0.8.0
In this release we introduces various tools for texturing which will be implemented in the later release, as well as some general quality-of-life improvements to our engine.
See developer notes in #29 to learn more about rule-based biome-dependent texture splatting
Texture
STPTextureDatabase
STPTextureDatabase is a non-owning storage of collection of texture data and information.
As discussed in the related PR, textures are managed into texture, group and map. Each texture contains multiple maps of different types, and one map belongs to a group which contains properties of all maps.
STPTextureSplatBuilder
Part of STPTextureDatabase. A simple utility that allows each biome to have different texture. Texture can have different splatting rules within the biome on the terrain, and currently the builder allows altitude and gradient splatting. Each rule maps to a texture which allow implementation to render the texture for that active region.
STPDatabaseView
Part of STPTextureDatabase. It allows querying large result sets from database for efficient data processing by STPTextureFactory.
STPTextureFactory
A generator class that takes a texture database, making some batch queries and convert all texture and rules into new data structures such that device and shader can make use of those information efficiently to generate terrain texture splatmap.
New
- Introduce
STPHashCombinefor mixing up hash values. It was previously located inSTPChunkStorage. - Introduce
STPRuntimeCompilableas a high-level wrapper to NVRTC APIs, it was previously part ofSTPDiversityGeneratorRTCwhich has been removed in this update. To keep using JIT compilation feature for diversity generator client must inherit bothSTPDiversityGeneratorandSTPRuntimeCompilable. SQLiteis now one of the middleware ofSuperTerrain+. IntroduceSTPSQLite.has a compatibility include header.- Introduce
STPOpenGLas a compatibility header toglad.h. - New exception type
STPDatabaseError. - New error handling functionality for errors from
SQLite.
General fixes and improvements
- Update unit test system to catchorg/Catch2@48a8898
- Replace
std::stringusage inSTPConsoleReporterwithstd::string_view. - Refine reallocation condition, array insertion function and memory operations in
STPSingleHistogramFilter, making it more efficient. - Replace static-only classes with namespaces.
- Update
READMEandLICENSE. - Declare
noexceptfor all copy/move constructors/assignment operators. - Improve CUDA stream sync. behavio in
STPChunkManager.