|
VisuTwin Canvas
C++ 3D Engine — Metal Backend
|
GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management. More...
#include <platform/graphics/texture.h>
Public Member Functions | |
| uint32_t | depth () const |
| GraphicsDevice * | device () const |
| TextureEncoding | encoding () const |
| PixelFormat | format () const |
| void * | getArrayData (uint32_t mipLevel, uint32_t index) const |
| uint32_t | getArrayLength () const |
| void * | getFaceData (uint32_t mipLevel, uint32_t face) const |
| void * | getLevel (uint32_t mipLevel) const |
| size_t | getLevelDataSize (uint32_t mipLevel, uint32_t face=0) const |
| uint32_t | getNumLevels () const |
| bool | hasLevels () const |
| uint32_t | height () const |
| gpu::HardwareTexture * | impl () const |
| bool | isArray () const |
| bool | isCubemap () const |
| bool | isVolume () const |
| bool | mipmaps () const |
| const std::string & | name () const |
| bool | needsMipmapsUpload () const |
| bool | needsUpload () const |
| void | resize (uint32_t width, uint32_t height, uint32_t depth=1) |
| void | setAddressU (AddressMode address) |
| void | setAddressV (AddressMode address) |
| void | setAddressW (AddressMode address) |
| void | setEncoding (TextureEncoding value) |
| void | setLevelData (uint32_t mipLevel, const uint8_t *data, size_t dataSize, uint32_t face=0) |
| void | setMagFilter (FilterMode filter) |
| void | setMinFilter (FilterMode filter) |
| void | setMipmaps (bool mipmaps) |
| void | setNeedsMipmapsUpload (const bool needsMipmapsUpload) |
| void | setNeedsUpload (const bool needsUpload) |
| bool | storage () const |
| Texture (GraphicsDevice *graphicsDevice, const TextureOptions &options=TextureOptions{}) | |
| void | upload () |
| uint32_t | width () const |
| ~Texture () | |
Protected Member Functions | |
| virtual void | propertyChanged (TextureProperty flag) |
GPU texture resource supporting 2D, cubemap, volume, and array formats with mipmap management.
Texture wraps a GPU texture object. It supports multiple formats (LDR, HDR, depth), filtering modes, and addressing modes. Pixel data is uploaded via upload() after setting level data. Used by materials for surface maps and by render targets for off-screen rendering.
|
explicit |
Definition at line 19 of file texture.cpp.
References depth(), visutwin::canvas::TextureOptions::depth, visutwin::canvas::FILTER_NEAREST, format(), height(), visutwin::canvas::TextureOptions::height, isArray(), visutwin::canvas::isCompressedPixelFormat(), visutwin::canvas::isIntegerPixelFormat(), visutwin::canvas::TextureOptions::levels, mipmaps(), name(), visutwin::canvas::TextureOptions::numLevels, visutwin::canvas::TextureOptions::projection, storage(), visutwin::canvas::TEXTUREPROJECTION_CUBE, width(), and visutwin::canvas::TextureOptions::width.
| visutwin::canvas::Texture::~Texture | ( | ) |
Definition at line 68 of file texture.cpp.
|
inline |
|
inline |
Definition at line 100 of file texture.h.
Referenced by visutwin::canvas::RenderTarget::RenderTarget().
|
inline |
|
inline |
Definition at line 97 of file texture.h.
Referenced by visutwin::canvas::RenderPassDof::RenderPassDof(), and Texture().
| void * visutwin::canvas::Texture::getArrayData | ( | uint32_t | mipLevel, |
| uint32_t | index ) const |
Definition at line 211 of file texture.cpp.
References getLevel(), and isArray().
|
inline |
| void * visutwin::canvas::Texture::getFaceData | ( | uint32_t | mipLevel, |
| uint32_t | face ) const |
Definition at line 201 of file texture.cpp.
| void * visutwin::canvas::Texture::getLevel | ( | uint32_t | mipLevel | ) | const |
Definition at line 147 of file texture.cpp.
Referenced by visutwin::canvas::EnvLighting::generateAtlas(), visutwin::canvas::EnvLighting::generateSkyboxCubemap(), and getArrayData().
| size_t visutwin::canvas::Texture::getLevelDataSize | ( | uint32_t | mipLevel, |
| uint32_t | face = 0 ) const |
Definition at line 155 of file texture.cpp.
|
inline |
|
inline |
Definition at line 65 of file texture.h.
Referenced by visutwin::canvas::MetalComposePass::execute(), visutwin::canvas::MetalLICPass::execute(), visutwin::canvas::MetalTaaPass::execute(), visutwin::canvas::RenderPassTAA::execute(), visutwin::canvas::EnvLighting::generateAtlas(), visutwin::canvas::EnvLighting::generateSkyboxCubemap(), resize(), Texture(), and visutwin::canvas::Sky::updateSkyMesh().
|
inline |
Definition at line 101 of file texture.h.
Referenced by visutwin::canvas::MetalParticleComputePass::advect(), visutwin::canvas::MetalTextureBinder::bindCached(), visutwin::canvas::MetalCoCPass::execute(), visutwin::canvas::MetalComposePass::execute(), visutwin::canvas::MetalDepthAwareBlurPass::execute(), visutwin::canvas::MetalDofBlurPass::execute(), visutwin::canvas::MetalLICPass::execute(), visutwin::canvas::MetalSsaoPass::execute(), visutwin::canvas::MetalTaaPass::execute(), visutwin::canvas::MetalMarchingCubesPass::extract(), and visutwin::canvas::MetalMarchingCubesPass::extractBatch().
|
inline |
Definition at line 69 of file texture.h.
Referenced by getArrayData(), and Texture().
|
inline |
Definition at line 85 of file texture.h.
Referenced by visutwin::canvas::FrameGraph::compile(), and visutwin::canvas::Sky::updateSkyMesh().
|
inline |
Definition at line 94 of file texture.h.
Referenced by setMipmaps(), and Texture().
|
inline |
|
inline |
Definition at line 74 of file texture.h.
Referenced by setNeedsMipmapsUpload().
|
inline |
Definition at line 73 of file texture.h.
Referenced by setNeedsUpload().
|
protectedvirtual |
Definition at line 323 of file texture.cpp.
Referenced by setAddressU(), setAddressV(), setAddressW(), setMagFilter(), and setMinFilter().
| void visutwin::canvas::Texture::resize | ( | uint32_t | width, |
| uint32_t | height, | ||
| uint32_t | depth = 1 ) |
Definition at line 219 of file texture.cpp.
| void visutwin::canvas::Texture::setAddressU | ( | AddressMode | address | ) |
Definition at line 295 of file texture.cpp.
References propertyChanged(), and visutwin::canvas::TEXPROPERTY_ADDRESS_U.
Referenced by visutwin::canvas::Scene::setEnvAtlas().
| void visutwin::canvas::Texture::setAddressV | ( | AddressMode | address | ) |
Definition at line 303 of file texture.cpp.
References propertyChanged(), and visutwin::canvas::TEXPROPERTY_ADDRESS_V.
Referenced by visutwin::canvas::Scene::setEnvAtlas().
| void visutwin::canvas::Texture::setAddressW | ( | AddressMode | address | ) |
Definition at line 311 of file texture.cpp.
References propertyChanged(), and visutwin::canvas::TEXPROPERTY_ADDRESS_W.
|
inline |
| void visutwin::canvas::Texture::setLevelData | ( | uint32_t | mipLevel, |
| const uint8_t * | data, | ||
| size_t | dataSize, | ||
| uint32_t | face = 0 ) |
Definition at line 163 of file texture.cpp.
References storage().
| void visutwin::canvas::Texture::setMagFilter | ( | FilterMode | filter | ) |
Definition at line 283 of file texture.cpp.
References propertyChanged(), and visutwin::canvas::TEXPROPERTY_MAG_FILTER.
Referenced by visutwin::canvas::Scene::setEnvAtlas().
| void visutwin::canvas::Texture::setMinFilter | ( | FilterMode | filter | ) |
Definition at line 271 of file texture.cpp.
References propertyChanged(), and visutwin::canvas::TEXPROPERTY_MIN_FILTER.
Referenced by visutwin::canvas::Scene::setEnvAtlas().
| void visutwin::canvas::Texture::setMipmaps | ( | bool | mipmaps | ) |
Definition at line 260 of file texture.cpp.
References mipmaps().
Referenced by visutwin::canvas::Scene::setEnvAtlas().
|
inline |
Definition at line 77 of file texture.h.
References needsMipmapsUpload().
|
inline |
Definition at line 76 of file texture.h.
References needsUpload().
|
inline |
Definition at line 98 of file texture.h.
Referenced by setLevelData(), and Texture().
| void visutwin::canvas::Texture::upload | ( | ) |
Definition at line 137 of file texture.cpp.
|
inline |
Definition at line 63 of file texture.h.
Referenced by visutwin::canvas::MetalComposePass::execute(), visutwin::canvas::MetalLICPass::execute(), visutwin::canvas::MetalTaaPass::execute(), visutwin::canvas::RenderPassTAA::execute(), visutwin::canvas::EnvLighting::generateAtlas(), visutwin::canvas::EnvLighting::generateSkyboxCubemap(), resize(), Texture(), and visutwin::canvas::Sky::updateSkyMesh().