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.
- 参数
-
residentPages Unique 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()
|
inline |
◆ create()
|
static |
Validate configuration and create an empty virtual texture.
在文件 VirtualTextureBlend.cpp 第 55 行定义.
引用了 eve::graphics::VirtualTextureBlendConfig::borderSize, config(), eve::graphics::VirtualTextureBlendConfig::height, eve::graphics::VirtualTextureBlendConfig::residentPageCapacity, eve::graphics::VirtualTextureBlendConfig::tileSize , 以及 eve::graphics::VirtualTextureBlendConfig::width.
◆ 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 |
Page count x.
在文件 VirtualTextureBlend.cpp 第 103 行定义.
引用了 eve::graphics::VirtualTextureBlendConfig::tileSize, width , 以及 eve::graphics::VirtualTextureBlendConfig::width.
被这些函数引用 buildResidentSet().
◆ pageCountY()
| int eve::graphics::VirtualTextureBlend::pageCountY | ( | int | mipLevel = 0 | ) | const |
Page count y.
在文件 VirtualTextureBlend.cpp 第 109 行定义.
引用了 height, eve::graphics::VirtualTextureBlendConfig::height , 以及 eve::graphics::VirtualTextureBlendConfig::tileSize.
被这些函数引用 buildResidentSet().
◆ 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 行定义.
该类的文档由以下文件生成:
- src/modules/graphics/VirtualTextureBlend.h
- src/modules/graphics/VirtualTextureBlend.cpp