载入中...
搜索中...
未找到
eve::graphics::VirtualTextureBlend类 参考

CPU reference implementation of a tiled, height-aware material virtual texture. 更多...

#include <VirtualTextureBlend.h>

Public 成员函数

eve::Result< std::uint32_t > addLayer (const VirtualTextureBlendLayer &layer)
 Copy and append one material layer, invalidating generated pages atomically.
 
eve::Result< std::shared_ptr< const image::ImageData > > requestAlbedoPage (int pageX, int pageY, int mipLevel)
 Resolve one page at the requested mip level.
 
eve::Result< std::shared_ptr< const image::ImageData > > requestNormalPage (int pageX, int pageY, int mipLevel)
 Resolve a tangent-space normal page using vector blending and renormalization.
 
eve::Result< std::unique_ptr< image::ImageData > > bakeAlbedo ()
 Bake the complete mip-zero albedo substitute used for nonresident pages.
 
eve::Result< std::unique_ptr< image::ImageData > > bakeNormal ()
 Bake the complete mip-zero tangent-space normal substitute for nonresident pages.
 
eve::Result< VirtualTextureResidentSet > buildResidentSet (const std::vector< VirtualTexturePageId > &residentPages)
 Build an atlas, page table, and whole-surface substitute for selected mip-zero pages.
 
void invalidate ()
 Clear generated pages while preserving immutable source layers.
 
VirtualTextureBlendStats stats () const
 Snapshot current cache counters.
 
int pageCountX (int mipLevel=0) const
 Page count x.
 
int pageCountY (int mipLevel=0) const
 Page count y.
 
const VirtualTextureBlendConfig & config () const
 Config.
 

静态 Public 成员函数

static eve::Result< std::unique_ptr< VirtualTextureBlend > > create (const VirtualTextureBlendConfig &config)
 Validate configuration and create an empty virtual texture.
 

详细描述

CPU reference implementation of a tiled, height-aware material virtual texture.

Pages are generated on demand and retained in an LRU cache. Source rasters are copied when a layer is admitted, so requests never retain caller-owned pointers. Every page includes a texel border sampled from virtual neighbours, preventing filtering seams between physical pages. The implementation is deterministic and backend-neutral; render backends may upload requested pages to a physical cache without changing the material authoring contract.

@thread Not thread-safe; create, mutate, and request pages on one authoring/render thread. @reentrancy Does not invoke callbacks.

在文件 VirtualTextureBlend.h 第 80 行定义.

成员函数说明

◆ addLayer()

eve::Result< std::uint32_t > eve::graphics::VirtualTextureBlend::addLayer ( const VirtualTextureBlendLayer &  layer)

Copy and append one material layer, invalidating generated pages atomically.

返回
Stable zero-based layer index, or a structured validation failure.

在文件 VirtualTextureBlend.cpp 第 72 行定义.

引用了 eve::graphics::VirtualTextureBlendLayer::albedo, eve::Result< T >::failure(), invalidate(), layer, owned , 以及 eve::Result< T >::success().

◆ bakeAlbedo()

eve::Result< std::unique_ptr< image::ImageData > > eve::graphics::VirtualTextureBlend::bakeAlbedo ( )

Bake the complete mip-zero albedo substitute used for nonresident pages.

在文件 VirtualTextureBlend.cpp 第 215 行定义.

被这些函数引用 buildResidentSet().

◆ bakeNormal()

eve::Result< std::unique_ptr< image::ImageData > > eve::graphics::VirtualTextureBlend::bakeNormal ( )

Bake the complete mip-zero tangent-space normal substitute for nonresident pages.

在文件 VirtualTextureBlend.cpp 第 219 行定义.

被这些函数引用 buildResidentSet().

◆ buildResidentSet()

eve::Result< VirtualTextureResidentSet > eve::graphics::VirtualTextureBlend::buildResidentSet ( const std::vector< VirtualTexturePageId > &  residentPages)

Build an atlas, page table, and whole-surface substitute for selected mip-zero pages.

参数
residentPagesUnique page coordinates to publish as resident.
返回
A self-contained immutable upload transaction, or a validation failure.

在文件 VirtualTextureBlend.cpp 第 242 行定义.

引用了 albedo, eve::graphics::VirtualTextureResidentSet::albedoAtlas, bakeAlbedo(), bakeNormal(), eve::graphics::VirtualTextureBlendConfig::borderSize, eve::Result< T >::failure(), index, key, normal, output, pageCountX(), pageCountY(), requestAlbedoPage(), requestNormalPage(), eve::graphics::VirtualTextureBlendConfig::residentPageCapacity, eve::image::ImageData::setPixel(), source, eve::Result< T >::success(), eve::graphics::VirtualTextureBlendConfig::tileSize, u, v, x , 以及 y.

◆ config()

const VirtualTextureBlendConfig & eve::graphics::VirtualTextureBlend::config ( ) const
inline

Config.

在文件 VirtualTextureBlend.h 第 128 行定义.

被这些函数引用 create().

◆ create()

◆ invalidate()

void eve::graphics::VirtualTextureBlend::invalidate ( )

Clear generated pages while preserving immutable source layers.

在文件 VirtualTextureBlend.cpp 第 314 行定义.

被这些函数引用 addLayer().

◆ pageCountX()

int eve::graphics::VirtualTextureBlend::pageCountX ( int  mipLevel = 0) const

◆ pageCountY()

int eve::graphics::VirtualTextureBlend::pageCountY ( int  mipLevel = 0) const

◆ requestAlbedoPage()

eve::Result< std::shared_ptr< const image::ImageData > > eve::graphics::VirtualTextureBlend::requestAlbedoPage ( int  pageX,
int  pageY,
int  mipLevel 
)

Resolve one page at the requested mip level.

返回
Shared immutable RGBA8 page. The receipt remains alive after LRU eviction.

在文件 VirtualTextureBlend.cpp 第 115 行定义.

被这些函数引用 buildResidentSet().

◆ requestNormalPage()

eve::Result< std::shared_ptr< const image::ImageData > > eve::graphics::VirtualTextureBlend::requestNormalPage ( int  pageX,
int  pageY,
int  mipLevel 
)

Resolve a tangent-space normal page using vector blending and renormalization.

在文件 VirtualTextureBlend.cpp 第 120 行定义.

被这些函数引用 buildResidentSet().

◆ stats()

VirtualTextureBlendStats eve::graphics::VirtualTextureBlend::stats ( ) const

Snapshot current cache counters.

在文件 VirtualTextureBlend.cpp 第 319 行定义.


该类的文档由以下文件生成: