Graphics: Add 2D & cubemap white textures
This commit is contained in:
parent
2da086b7df
commit
19f17fa059
|
|
@ -85,6 +85,7 @@ Nazara Engine:
|
||||||
- Fixed Sound copy which was not copying looping state
|
- Fixed Sound copy which was not copying looping state
|
||||||
- Fixed Billboard bounding volume
|
- Fixed Billboard bounding volume
|
||||||
- Fixed Directory::GetResultSize and Directory::IsResultDirectory on Posix systems
|
- Fixed Directory::GetResultSize and Directory::IsResultDirectory on Posix systems
|
||||||
|
- Graphics module now register "White2D" and "WhiteCubemap" textures to the TextureLibrary (respectively a 1x1 texture 2D and a 1x1 texture cubemap)
|
||||||
|
|
||||||
Nazara Development Kit:
|
Nazara Development Kit:
|
||||||
- Added ImageWidget (#139)
|
- Added ImageWidget (#139)
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ namespace Nz
|
||||||
Buffer m_vertexBuffer;
|
Buffer m_vertexBuffer;
|
||||||
RenderStates m_clearStates;
|
RenderStates m_clearStates;
|
||||||
ShaderRef m_clearShader;
|
ShaderRef m_clearShader;
|
||||||
Texture m_whiteTexture;
|
TextureRef m_whiteTexture;
|
||||||
VertexBuffer m_billboardPointBuffer;
|
VertexBuffer m_billboardPointBuffer;
|
||||||
VertexBuffer m_spriteBuffer;
|
VertexBuffer m_spriteBuffer;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ namespace Nz
|
||||||
Buffer m_vertexBuffer;
|
Buffer m_vertexBuffer;
|
||||||
RenderStates m_clearStates;
|
RenderStates m_clearStates;
|
||||||
ShaderRef m_clearShader;
|
ShaderRef m_clearShader;
|
||||||
Texture m_whiteTexture;
|
TextureRef m_whiteTexture;
|
||||||
VertexBuffer m_billboardPointBuffer;
|
VertexBuffer m_billboardPointBuffer;
|
||||||
VertexBuffer m_spriteBuffer;
|
VertexBuffer m_spriteBuffer;
|
||||||
mutable DepthRenderQueue m_renderQueue;
|
mutable DepthRenderQueue m_renderQueue;
|
||||||
|
|
|
||||||
|
|
@ -88,13 +88,13 @@ namespace Nz
|
||||||
mutable std::vector<std::pair<const VertexStruct_XYZ_Color_UV*, std::size_t>> m_spriteChains;
|
mutable std::vector<std::pair<const VertexStruct_XYZ_Color_UV*, std::size_t>> m_spriteChains;
|
||||||
Buffer m_vertexBuffer;
|
Buffer m_vertexBuffer;
|
||||||
mutable BasicRenderQueue m_renderQueue;
|
mutable BasicRenderQueue m_renderQueue;
|
||||||
Texture m_whiteTexture;
|
TextureRef m_whiteCubemap;
|
||||||
|
TextureRef m_whiteTexture;
|
||||||
VertexBuffer m_billboardPointBuffer;
|
VertexBuffer m_billboardPointBuffer;
|
||||||
VertexBuffer m_spriteBuffer;
|
VertexBuffer m_spriteBuffer;
|
||||||
unsigned int m_maxLightPassPerObject;
|
unsigned int m_maxLightPassPerObject;
|
||||||
|
|
||||||
static IndexBuffer s_quadIndexBuffer;
|
static IndexBuffer s_quadIndexBuffer;
|
||||||
static Texture s_dummyReflection;
|
|
||||||
static TextureSampler s_reflectionSampler;
|
static TextureSampler s_reflectionSampler;
|
||||||
static TextureSampler s_shadowSampler;
|
static TextureSampler s_shadowSampler;
|
||||||
static VertexBuffer s_quadVertexBuffer;
|
static VertexBuffer s_quadVertexBuffer;
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
||||||
|
|
||||||
std::array<UInt8, 4> whitePixel = { { 255, 255, 255, 255 } };
|
m_whiteTexture = Nz::TextureLibrary::Get("White2D");
|
||||||
m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1);
|
|
||||||
m_whiteTexture.Update(whitePixel.data());
|
|
||||||
|
|
||||||
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
||||||
|
|
||||||
|
|
@ -576,7 +574,7 @@ namespace Nz
|
||||||
lastMaterial = basicSprites.material;
|
lastMaterial = basicSprites.material;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture;
|
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get();
|
||||||
if (overlayTexture != lastOverlay)
|
if (overlayTexture != lastOverlay)
|
||||||
{
|
{
|
||||||
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
||||||
|
|
|
||||||
|
|
@ -49,9 +49,7 @@ namespace Nz
|
||||||
{
|
{
|
||||||
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
||||||
|
|
||||||
std::array<UInt8, 4> whitePixel = { {255, 255, 255, 255} };
|
m_whiteTexture = Nz::TextureLibrary::Get("White2D");
|
||||||
m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1);
|
|
||||||
m_whiteTexture.Update(whitePixel.data());
|
|
||||||
|
|
||||||
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
||||||
|
|
||||||
|
|
@ -587,7 +585,7 @@ namespace Nz
|
||||||
lastMaterial = basicSprites.material;
|
lastMaterial = basicSprites.material;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture;
|
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get();
|
||||||
if (overlayTexture != lastOverlay)
|
if (overlayTexture != lastOverlay)
|
||||||
{
|
{
|
||||||
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
||||||
|
|
|
||||||
|
|
@ -52,9 +52,8 @@ namespace Nz
|
||||||
{
|
{
|
||||||
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
ErrorFlags flags(ErrorFlag_ThrowException, true);
|
||||||
|
|
||||||
std::array<UInt8, 4> whitePixel = { {255, 255, 255, 255} };
|
m_whiteCubemap = Nz::TextureLibrary::Get("WhiteCubemap");
|
||||||
m_whiteTexture.Create(ImageType_2D, PixelFormatType_RGBA8, 1, 1);
|
m_whiteTexture = Nz::TextureLibrary::Get("White2D");
|
||||||
m_whiteTexture.Update(whitePixel.data());
|
|
||||||
|
|
||||||
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
m_vertexBuffer.Create(s_vertexBufferSize, DataStorage_Hardware, BufferUsage_Dynamic);
|
||||||
|
|
||||||
|
|
@ -219,10 +218,6 @@ namespace Nz
|
||||||
|
|
||||||
s_shadowSampler.SetFilterMode(SamplerFilter_Bilinear);
|
s_shadowSampler.SetFilterMode(SamplerFilter_Bilinear);
|
||||||
s_shadowSampler.SetWrapMode(SamplerWrap_Clamp);
|
s_shadowSampler.SetWrapMode(SamplerWrap_Clamp);
|
||||||
|
|
||||||
std::array<UInt8, 6> whitePixels = { { 255, 255, 255, 255, 255, 255 } };
|
|
||||||
s_dummyReflection.Create(ImageType_Cubemap, PixelFormatType_L8, 1, 1);
|
|
||||||
s_dummyReflection.Update(whitePixels.data());
|
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
|
@ -239,7 +234,6 @@ namespace Nz
|
||||||
|
|
||||||
void ForwardRenderTechnique::Uninitialize()
|
void ForwardRenderTechnique::Uninitialize()
|
||||||
{
|
{
|
||||||
s_dummyReflection.Destroy();
|
|
||||||
s_quadIndexBuffer.Reset();
|
s_quadIndexBuffer.Reset();
|
||||||
s_quadVertexBuffer.Reset();
|
s_quadVertexBuffer.Reset();
|
||||||
}
|
}
|
||||||
|
|
@ -247,7 +241,7 @@ namespace Nz
|
||||||
/*!
|
/*!
|
||||||
* \brief Chooses the nearest lights for one object
|
* \brief Chooses the nearest lights for one object
|
||||||
*
|
*
|
||||||
* \param object Sphere symbolising the object
|
* \param object Sphere symbolizing the object
|
||||||
* \param includeDirectionalLights Should directional lights be included in the computation
|
* \param includeDirectionalLights Should directional lights be included in the computation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
@ -726,7 +720,7 @@ namespace Nz
|
||||||
lastMaterial = basicSprites.material;
|
lastMaterial = basicSprites.material;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : &m_whiteTexture;
|
const Nz::Texture* overlayTexture = (basicSprites.overlay) ? basicSprites.overlay.Get() : m_whiteTexture.Get();
|
||||||
if (overlayTexture != lastOverlay)
|
if (overlayTexture != lastOverlay)
|
||||||
{
|
{
|
||||||
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
Renderer::SetTexture(overlayTextureUnit, overlayTexture);
|
||||||
|
|
@ -897,7 +891,6 @@ namespace Nz
|
||||||
}
|
}
|
||||||
|
|
||||||
IndexBuffer ForwardRenderTechnique::s_quadIndexBuffer;
|
IndexBuffer ForwardRenderTechnique::s_quadIndexBuffer;
|
||||||
Texture ForwardRenderTechnique::s_dummyReflection;
|
|
||||||
TextureSampler ForwardRenderTechnique::s_reflectionSampler;
|
TextureSampler ForwardRenderTechnique::s_reflectionSampler;
|
||||||
TextureSampler ForwardRenderTechnique::s_shadowSampler;
|
TextureSampler ForwardRenderTechnique::s_shadowSampler;
|
||||||
VertexBuffer ForwardRenderTechnique::s_quadVertexBuffer;
|
VertexBuffer ForwardRenderTechnique::s_quadVertexBuffer;
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,21 @@ namespace Nz
|
||||||
|
|
||||||
Font::SetDefaultAtlas(std::make_shared<GuillotineTextureAtlas>());
|
Font::SetDefaultAtlas(std::make_shared<GuillotineTextureAtlas>());
|
||||||
|
|
||||||
|
// Textures
|
||||||
|
std::array<UInt8, 6> whitePixels = { { 255, 255, 255, 255, 255, 255 } };
|
||||||
|
|
||||||
|
Nz::TextureRef whiteTexture = Nz::Texture::New();
|
||||||
|
whiteTexture->Create(ImageType_2D, PixelFormatType_L8, 1, 1);
|
||||||
|
whiteTexture->Update(whitePixels.data());
|
||||||
|
|
||||||
|
TextureLibrary::Register("White2D", std::move(whiteTexture));
|
||||||
|
|
||||||
|
Nz::TextureRef whiteCubemap = Nz::Texture::New();
|
||||||
|
whiteCubemap->Create(ImageType_Cubemap, PixelFormatType_L8, 1, 1);
|
||||||
|
whiteCubemap->Update(whitePixels.data());
|
||||||
|
|
||||||
|
TextureLibrary::Register("WhiteCubemap", std::move(whiteCubemap));
|
||||||
|
|
||||||
onExit.Reset();
|
onExit.Reset();
|
||||||
|
|
||||||
NazaraNotice("Initialized: Graphics module");
|
NazaraNotice("Initialized: Graphics module");
|
||||||
|
|
@ -217,6 +232,10 @@ namespace Nz
|
||||||
|
|
||||||
defaultAtlas.reset();
|
defaultAtlas.reset();
|
||||||
|
|
||||||
|
// Textures
|
||||||
|
TextureLibrary::Unregister("White2D");
|
||||||
|
TextureLibrary::Unregister("WhiteCubemap");
|
||||||
|
|
||||||
// Loaders
|
// Loaders
|
||||||
Loaders::UnregisterMesh();
|
Loaders::UnregisterMesh();
|
||||||
Loaders::UnregisterTexture();
|
Loaders::UnregisterTexture();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue