SLProject
4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
|
Texture object generated in run time from another texture. More...
#include <SLGLTextureIBL.h>
Public Member Functions | |
SLGLTextureIBL () | |
Default constructor. More... | |
SLGLTextureIBL (SLAssetManager *assetMgr, SLstring shaderPath, SLGLTexture *sourceTexture, SLVec2i size, SLTextureType texType, SLenum target, SLbool readBackPixels=true, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR) | |
ctor for generated textures More... | |
virtual | ~SLGLTextureIBL () |
virtual void | build (SLint texID=0) |
void | logFramebufferStatus () |
Public Member Functions inherited from SLGLTexture | |
SLGLTexture () | |
Default ctor for all stack instances (not created with new) More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLVCol4f &colors, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, const SLstring &name="2D-Texture") | |
ctor for 1D texture with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, SLint min_filter, SLint mag_filter, SLint wrapS, SLint wrapT, SLenum target=GL_TEXTURE_2D) | |
ctor for empty 2D textures More... | |
SLGLTexture (SLAssetManager *assetMgr, unsigned char *data, int width, int height, int cvtype, SLint min_filter, SLint mag_filter, SLTextureType type, SLint wrapS, SLint wrapT) | |
ctor for 2D textures from byte pointer More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLstring &imageFilename, SLint min_filter=GL_LINEAR_MIPMAP_LINEAR, SLint mag_filter=GL_LINEAR, SLTextureType type=TT_unknown, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT) | |
ctor for 2D textures with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLVstring &imageFilenames, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT, const SLstring &name="3D-Texture", SLbool loadGrayscaleIntoAlpha=false) | |
ctor for 3D texture with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, SLint depth, const SLstring &imageFilename, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT, const SLstring &name="3D-Texture", SLbool loadGrayscaleIntoAlpha=false) | |
ctor for 3D texture from a single file with depth as 3rd dimension More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLstring &imageFilenameXPos, const SLstring &imageFilenameXNeg, const SLstring &imageFilenameYPos, const SLstring &imageFilenameYNeg, const SLstring &imageFilenameZPos, const SLstring &imageFilenameZNeg, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLTextureType type=TT_unknown) | |
ctor for cube mapping with internal image allocation More... | |
~SLGLTexture () override | |
void | deleteData (SLbool deleteAlsoOnGPU) |
Delete all data (CVImages and GPU textures) More... | |
void | deleteDataGpu () |
Deletes the OpenGL texture objects and releases the memory on the GPU. More... | |
void | deleteImages () |
Deletes the CVImages in _images. No more texture mapping in ray tracing. More... | |
void | bindActive (SLuint texUnit=0) |
void | fullUpdate () |
void | drawSprite (SLbool doUpdate, SLfloat x, SLfloat y, SLfloat w, SLfloat h) |
Draws the texture as 2D sprite with OpenGL buffers. More... | |
void | cubeUV2XYZ (SLint index, SLfloat u, SLfloat v, SLfloat &x, SLfloat &y, SLfloat &z) |
Computes the unnormalised vector x,y,z from tex. coords. uv with cubemap index. More... | |
void | cubeXYZ2UV (SLfloat x, SLfloat y, SLfloat z, SLint &index, SLfloat &u, SLfloat &v) |
Computes the uv and cubemap image index from a unnormalised vector x,y,z. More... | |
SLstring | filterString (SLint glFilter) |
Returns OpenGL texture filter as string. More... | |
void | texType (SLTextureType bt) |
void | uvIndex (SLbyte i) |
void | bumpScale (SLfloat bs) |
void | minFiler (SLint minF) |
void | magFiler (SLint magF) |
void | needsUpdate (SLbool update) |
void | textureSize (int width, int height) |
void | deleteImageAfterBuild (SLbool delImg) |
If deleteImageAfterBuild is set to true you won't be able to ray trace the scene. More... | |
SLuint | width () |
SLuint | height () |
SLuint | depth () |
SLbyte | uvIndex () |
SLint | bytesPerPixel () |
SLint | bytesOnGPU () |
SLint | bytesInFile () |
CVVImage & | images () |
SLenum | target () const |
SLuint | texID () const |
SLTextureType | texType () |
SLfloat | bumpScale () const |
SLCol4f | getTexelf (SLfloat u, SLfloat v, SLuint imgIndex=0) |
SLGLTexture::getTexelf returns a pixel color from u & v texture coordinates. More... | |
SLCol4f | getTexelf (const SLVec3f &cubemapDir) |
SLGLTexture::getTexelf returns a pixel color at the specified cubemap direction. More... | |
SLbool | hasAlpha () |
SLMat4f | tm () |
SLbool | autoCalcTM3D () const |
SLbool | needsUpdate () |
SLstring | typeName () |
Returns the texture type as string. More... | |
SLstring | typeShortName () |
Returns the texture type short. More... | |
bool | isTexture () |
SLstring | minificationFilterName () |
SLstring | magnificationFilterName () |
void | build2DMipmaps (SLint target, SLuint index) |
SLbool | copyVideoImage (SLint camWidth, SLint camHeight, CVPixelFormatGL glFormat, SLuchar *data, SLbool isContinuous, SLbool isTopLeft) |
Copies the image data from a video camera into the current video image. More... | |
SLbool | copyVideoImage (SLint camWidth, SLint camHeight, CVPixelFormatGL srcFormat, CVPixelFormatGL dstFormat, SLuchar *data, SLbool isContinuous, SLbool isTopLeft) |
void | calc3DGradients (SLint sampleRadius, const function< void(int)> &onUpdateProgress=nullptr) |
void | smooth3DGradients (SLint smoothRadius, function< void(int)> onUpdateProgress=nullptr) |
SLVec2f | dudv (SLfloat u, SLfloat v) |
Public Member Functions inherited from SLObject | |
SLObject (const SLstring &Name="", const SLstring &url="") | |
virtual | ~SLObject () |
void | name (const SLstring &Name) |
void | url (const SLstring &url) |
const SLstring & | name () const |
const SLstring & | url () const |
Protected Member Functions | |
void | renderCube () |
Renders 2x2 cube, used to project a texture to a cube texture with 6 sides. More... | |
void | renderQuad () |
Renders a 2x2 XY quad, used for rendering and capturing the BRDF integral. More... | |
void | readPixels (int width, int height, string name, bool savePNG) |
Reads back the pixels into an image. More... | |
Protected Member Functions inherited from SLGLTexture | |
void | load (const SLstring &filename, SLbool flipVertical=true, SLbool loadGrayscaleIntoAlpha=false) |
Loads the texture, converts color depth & applies vertical mirroring. More... | |
void | load (const SLVCol4f &colors) |
Loads the 1D color data into an image of height 1. More... | |
Protected Attributes | |
SLuint | _cubeVAO = 0 |
SLuint | _cubeVBO = 0 |
SLuint | _quadVAO = 0 |
SLuint | _quadVBO = 0 |
SLGLTexture * | _sourceTexture |
2D Texture from the HDR Image More... | |
SLGLProgram * | _shaderProgram |
Shader program to render the texture. More... | |
SLMat4f | _captureProjection |
Projection matrix for capturing the textures. More... | |
SLVMat4f | _captureViews |
All 6 positions of the views that represent the 6 sides of the cube map. More... | |
SLbool | _readBackPixels |
Flag if generated texture should be read back from GPU into cvMat. More... | |
Protected Attributes inherited from SLGLTexture | |
CVVImage | _images |
Vector of CVImage pointers. More... | |
SLuint | _texID |
OpenGL texture ID. More... | |
SLTextureType | _texType |
See SLTextureType. More... | |
SLint | _width |
Texture image width in pixels (images exist either in _images or on the GPU or on both) More... | |
SLint | _height |
Texture image height in pixels (images exist either in _images or on the GPU or on both) More... | |
SLint | _depth |
3D Texture image depth (images exist either in _images or on the GPU or on both) More... | |
SLbyte | _uvIndex |
Texture coordinate index in SLMesh (0 = default) More... | |
SLint | _internalFormat |
Internal OpenGL format. More... | |
SLint | _bytesPerPixel |
Bytes per texture image pixel (images exist either in _images or on the GPU or on both) More... | |
SLint | _min_filter |
Minification filter. More... | |
SLint | _mag_filter |
Magnification filter. More... | |
SLint | _wrap_s |
Wrapping in s direction. More... | |
SLint | _wrap_t |
Wrapping in t direction. More... | |
SLenum | _target |
texture target More... | |
SLMat4f | _tm |
texture matrix More... | |
SLuint | _bytesOnGPU |
NO. of bytes on GPU. More... | |
SLuint | _bytesInFile |
NO. of bytes in file. More... | |
SLbool | _autoCalcTM3D |
Flag if texture matrix should be calculated from AABB for 3D mapping. More... | |
SLfloat | _bumpScale |
Bump mapping scale factor. More... | |
SLbool | _resizeToPow2 |
Flag if image should be resized to n^2. More... | |
SLGLVertexArray | _vaoSprite |
Vertex array object for sprite rendering. More... | |
std::atomic< bool > | _needsUpdate {} |
Flag if image needs an single update. More... | |
std::mutex | _mutex |
Mutex to protect parallel access (used in ray tracing) More... | |
SLbool | _deleteImageAfterBuild |
Flag if images should be deleted after build on GPU. More... | |
SLbool | _compressedTexture = false |
True for compressed texture format on GPU. More... | |
Protected Attributes inherited from SLObject | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from SLGLTexture | |
static SLTextureType | detectType (const SLstring &filename) |
Detects the texture type from the filename appendix (See SLTexType def.) More... | |
static string | internalFormatStr (int internalFormat) |
Returns the internal pixel format from OpenGL. More... | |
Static Public Attributes inherited from SLGLTexture | |
static SLfloat | maxAnisotropy = -1.0f |
Returns the derivation as [s,t]. More... | |
static SLuint | totalNumBytesOnGPU = 0 |
Total NO. of bytes used for textures on GPU. More... | |
Texture object generated in run time from another texture.
This class is mainly used to generate the textures used for reflections in the Image Base Lighting (IBL) techniques. It takes a source texture and projects it into a cube map with different rendering techniques to produces the textures needed in IBL like the irradiance or the prefilter map. This textures can be given to the SLMaterial with IBL. It uses the SLGLFrameBuffer class to render the scene into a cube map. These generated textures only exist on the GPU. There are no images in the SLGLTexture::_images vector.
Definition at line 31 of file SLGLTextureIBL.h.
|
inline |
Default constructor.
Definition at line 35 of file SLGLTextureIBL.h.
SLGLTextureIBL::SLGLTextureIBL | ( | SLAssetManager * | am, |
SLstring | shaderPath, | ||
SLGLTexture * | sourceTexture, | ||
SLVec2i | size, | ||
SLTextureType | texType, | ||
SLenum | target, | ||
SLbool | readBackPixels = true , |
||
SLint | min_filter = GL_LINEAR , |
||
SLint | mag_filter = GL_LINEAR |
||
) |
ctor for generated textures
Number of mip levels for roughness cubemaps.
ctor for generated textures from hdr textures
Definition at line 18 of file SLGLTextureIBL.cpp.
|
virtual |
Definition at line 91 of file SLGLTextureIBL.cpp.
Build the texture into a cube map, rendering the texture 6 times and capturing each time one side of the cube (except for the BRDF LUT texture, which is completely generated by calculations directly with the shader). This is probably the most difficult OpenGL code in the project.
Reimplemented from SLGLTexture.
Definition at line 112 of file SLGLTextureIBL.cpp.
void SLGLTextureIBL::logFramebufferStatus | ( | ) |
Definition at line 503 of file SLGLTextureIBL.cpp.
|
protected |
Reads back the pixels into an image.
Definition at line 482 of file SLGLTextureIBL.cpp.
|
protected |
Renders 2x2 cube, used to project a texture to a cube texture with 6 sides.
Definition at line 365 of file SLGLTextureIBL.cpp.
|
protected |
Renders a 2x2 XY quad, used for rendering and capturing the BRDF integral.
Definition at line 444 of file SLGLTextureIBL.cpp.
|
protected |
Projection matrix for capturing the textures.
Definition at line 69 of file SLGLTextureIBL.h.
|
protected |
All 6 positions of the views that represent the 6 sides of the cube map.
Definition at line 70 of file SLGLTextureIBL.h.
|
protected |
Definition at line 62 of file SLGLTextureIBL.h.
|
protected |
Definition at line 63 of file SLGLTextureIBL.h.
|
protected |
Definition at line 64 of file SLGLTextureIBL.h.
|
protected |
Definition at line 65 of file SLGLTextureIBL.h.
|
protected |
Flag if generated texture should be read back from GPU into cvMat.
Definition at line 71 of file SLGLTextureIBL.h.
|
protected |
Shader program to render the texture.
Definition at line 68 of file SLGLTextureIBL.h.
|
protected |
2D Texture from the HDR Image
Definition at line 67 of file SLGLTextureIBL.h.