diff --git a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp index b8f2838..1f828b2 100644 --- a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp +++ b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp @@ -23,6 +23,12 @@ namespace ia::iae { + SpriteRendererComponent::AnimationKeyFrame SpriteRendererComponent::GetKeyFrame(IN INT32 index) + { + index %= m_activeAnimation.Keys.size(); + return m_reverseAnimation ? m_activeAnimation.Keys[m_activeAnimation.Keys.size() - 1 - index] : m_activeAnimation.Keys[index]; + } + SpriteRendererComponent::SpriteRendererComponent(IN Node *node) : IComponent(node) { } @@ -48,8 +54,10 @@ namespace ia::iae IA_RELEASE_ASSERT((animation != INVALID_HANDLE) && (animation < m_animations.size())); m_prevAnimationKeyFrameIndex = 0; m_activeAnimation = m_animations[animation]; - m_prevAnimationKeyFrame = m_activeAnimation.Keys[m_prevAnimationKeyFrameIndex + 0]; - m_nextAnimationKeyFrame = m_activeAnimation.Keys[(m_prevAnimationKeyFrameIndex + 1) % m_activeAnimation.Keys.size()]; + + m_prevAnimationKeyFrame = GetKeyFrame(m_prevAnimationKeyFrameIndex + 0); + m_nextAnimationKeyFrame = GetKeyFrame(m_prevAnimationKeyFrameIndex + 1); + m_currentAnimationState = m_prevAnimationKeyFrame; m_activeAnimationHandle = animation; } @@ -97,8 +105,8 @@ namespace ia::iae m_activeAnimation = {}; return; } - m_prevAnimationKeyFrame = m_activeAnimation.Keys[m_prevAnimationKeyFrameIndex + 0]; - m_nextAnimationKeyFrame = m_activeAnimation.Keys[(m_prevAnimationKeyFrameIndex + 1) % keyCount]; + m_prevAnimationKeyFrame = GetKeyFrame(m_prevAnimationKeyFrameIndex + 0); + m_nextAnimationKeyFrame = GetKeyFrame(m_prevAnimationKeyFrameIndex + 1); m_currentAnimationState = m_prevAnimationKeyFrame; m_timelinePosition = 0; } diff --git a/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp b/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp index 88a3006..503f07e 100644 --- a/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp +++ b/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp @@ -55,6 +55,8 @@ namespace ia::iae glm::mat4 matView{1.0f}; glm::mat4 matModel{1.0f}; + BOOL g_flipH{false}; + BOOL g_flipV{false}; FLOAT32 g_parallaxFactor{0.0f}; BOOL Renderer::Initialize() @@ -219,20 +221,22 @@ namespace ia::iae SDL_SubmitGPUCommandBuffer(g_cmdBuffer); } - VOID Renderer::BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4 &colorOverlay) + VOID Renderer::SetFlipH(IN BOOL value) { - STATIC struct - { - glm::vec4 colorOverlay; - UINT32 flipV; - UINT32 flipH; - } textureState; + g_flipH = value; + } - textureState = {colorOverlay, flipV, flipH}; + VOID Renderer::SetFlipV(IN BOOL value) + { + g_flipV = value; + } + + VOID Renderer::BindTexture(IN Handle handle, IN CONST glm::vec4 &colorOverlay) + { SDL_GPUTextureSamplerBinding binding{.texture = (SDL_GPUTexture *) handle, .sampler = (SDL_GPUSampler *) GPUTexture::GetDefaultSampler()}; SDL_BindGPUFragmentSamplers(g_renderPass, 0, &binding, 1); - SDL_PushGPUFragmentUniformData(g_cmdBuffer, 0, &textureState, sizeof(textureState)); + SDL_PushGPUFragmentUniformData(g_cmdBuffer, 0, &colorOverlay, sizeof(colorOverlay)); } VOID SetModelTransformMatrix(IN FLOAT32 sortOffset, IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, @@ -243,13 +247,28 @@ namespace ia::iae else matView = glm::mat4(1.0f); SDL_PushGPUVertexUniformData(g_cmdBuffer, 1, &matView, sizeof(matView)); - g_parallaxFactor *= g_camera.Position().x/640.0f; - SDL_PushGPUFragmentUniformData(g_cmdBuffer, 1, &g_parallaxFactor, sizeof(g_parallaxFactor)); + FLOAT32 shaderParallaxFactor = g_parallaxFactor * g_camera.Position().x / 640.0f; + SDL_PushGPUFragmentUniformData(g_cmdBuffer, 1, &shaderParallaxFactor, sizeof(shaderParallaxFactor)); + + matModel = glm::mat4(1.0f); + + glm::vec3 poff = {0.0f, 0.0f, 0.0f}; + + const auto f = 1.0f; + if(g_flipH) + { + poff.x = scale.x * f; + } + + // [IATODO]: IMPL Flip V const auto depthTestOffset = sortOffset + (Engine::GetActiveScene()->YSortingEnabled() ? position.y : 0); - matModel = glm::translate(glm::mat4(1.0f), {position.x, position.y, position.z + depthTestOffset + (g_parallaxFactor < 0.0f ? 0.0f : -100.0f)}); + matModel = + glm::translate(matModel, {position.x + poff.x, position.y, + position.z + depthTestOffset + (g_parallaxFactor < 0.0f ? 0.0f : -100.0f)}); matModel = glm::rotate(matModel, rotation, glm::vec3(0.0f, 0.0f, 1.0f)); - matModel = glm::scale(matModel, scale); + matModel = glm::scale(matModel, scale * (g_flipH ? glm::vec3{-1.0f, 1.0f, 1.0f} : glm::vec3{1.0f, 1.0f, 1.0f})); + SDL_PushGPUVertexUniformData(g_cmdBuffer, 2, &matModel, sizeof(matModel)); } diff --git a/Src/IAEngine/imp/cpp/Texture.cpp b/Src/IAEngine/imp/cpp/Texture.cpp index 27a38ae..d005050 100644 --- a/Src/IAEngine/imp/cpp/Texture.cpp +++ b/Src/IAEngine/imp/cpp/Texture.cpp @@ -38,7 +38,9 @@ namespace ia::iae VOID Texture::Draw(IN FLOAT32 sortOffset, IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN BOOL flipH, IN BOOL flipV, IN CONST glm::vec4 &colorOverlay) CONST { - Renderer::BindTexture(m_handle, flipV, flipH, colorOverlay); + Renderer::SetFlipH(flipH); + Renderer::SetFlipV(flipV); + Renderer::BindTexture(m_handle, colorOverlay); QuadMesh::Draw(sortOffset, position, m_size * scale, rotation); } } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/imp/glsl/UnlitMesh/UnlitMesh.frag b/Src/IAEngine/imp/glsl/UnlitMesh/UnlitMesh.frag index 0153a70..59d3c5b 100644 --- a/Src/IAEngine/imp/glsl/UnlitMesh/UnlitMesh.frag +++ b/Src/IAEngine/imp/glsl/UnlitMesh/UnlitMesh.frag @@ -8,8 +8,6 @@ layout(location = 0) out vec4 outColor; layout(set = 2, binding = 0) uniform sampler2D texSampler; layout(set = 3, binding = 0) uniform UniformBufferObject { vec4 colorOverlay; - bool flipV; - bool flipH; } ubo; layout(set = 3, binding = 1) uniform UniformBufferObject2 { float parallaxFactor; @@ -19,8 +17,6 @@ void main() { vec2 uv = inTexCoord; uv.x += ubo2.parallaxFactor; - if(ubo.flipH) uv.x = 1 - uv.x; - if(ubo.flipV) uv.y = 1 - uv.y; outColor = texture(texSampler, uv) * ubo.colorOverlay; if(outColor.w < 0.1) discard; diff --git a/Src/IAEngine/imp/hpp/EmbeddedShaders.hpp b/Src/IAEngine/imp/hpp/EmbeddedShaders.hpp index 246091e..7a50085 100644 --- a/Src/IAEngine/imp/hpp/EmbeddedShaders.hpp +++ b/Src/IAEngine/imp/hpp/EmbeddedShaders.hpp @@ -27,7 +27,7 @@ namespace ia::iae CONSTEXPR UINT8 SHADER_SOURCE_UNLITMESH_VERT[1964] = { 0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x35,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x9,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x6,0x0,0xb,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78,0x0,0x0,0x0,0x0,0x6,0x0,0x6,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x0,0x6,0x0,0x7,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x0,0x0,0x0,0x0,0x6,0x0,0x7,0x0,0xb,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x0,0x6,0x0,0x7,0x0,0xb,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x0,0x5,0x0,0x3,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x11,0x0,0x0,0x0,0x55,0x42,0x4f,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x5f,0x50,0x65,0x72,0x53,0x63,0x65,0x6e,0x65,0x0,0x6,0x0,0x6,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x72,0x6f,0x6a,0x65,0x63,0x74,0x69,0x6f,0x6e,0x0,0x0,0x5,0x0,0x5,0x0,0x13,0x0,0x0,0x0,0x75,0x62,0x6f,0x50,0x65,0x72,0x53,0x63,0x65,0x6e,0x65,0x0,0x5,0x0,0x7,0x0,0x17,0x0,0x0,0x0,0x55,0x42,0x4f,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x5f,0x50,0x65,0x72,0x46,0x72,0x61,0x6d,0x65,0x0,0x6,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x76,0x69,0x65,0x77,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x19,0x0,0x0,0x0,0x75,0x62,0x6f,0x50,0x65,0x72,0x46,0x72,0x61,0x6d,0x65,0x0,0x5,0x0,0x7,0x0,0x1d,0x0,0x0,0x0,0x55,0x42,0x4f,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x5f,0x50,0x65,0x72,0x44,0x72,0x61,0x77,0x0,0x0,0x6,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6d,0x6f,0x64,0x65,0x6c,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x1f,0x0,0x0,0x0,0x75,0x62,0x6f,0x50,0x65,0x72,0x44,0x72,0x61,0x77,0x0,0x0,0x5,0x0,0x5,0x0,0x25,0x0,0x0,0x0,0x69,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x0,0x0,0x5,0x0,0x5,0x0,0x31,0x0,0x0,0x0,0x6f,0x75,0x74,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x5,0x0,0x5,0x0,0x33,0x0,0x0,0x0,0x69,0x6e,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x0,0x47,0x0,0x3,0x0,0xb,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x11,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x4,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x13,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x13,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x17,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x4,0x0,0x17,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x19,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x19,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x1d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x4,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1f,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1f,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x25,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x31,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x33,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1c,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x1e,0x0,0x6,0x0,0xb,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0x11,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x14,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0x17,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x18,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x18,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0x1d,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1e,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1e,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x23,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x24,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x24,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x0,0x0,0x80,0x3f,0x20,0x0,0x4,0x0,0x2d,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x2f,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x30,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x30,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x32,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x32,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x14,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x14,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x92,0x0,0x5,0x0,0x10,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x14,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x92,0x0,0x5,0x0,0x10,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x23,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x51,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x51,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x51,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x91,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x2d,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x2e,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x2f,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x31,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,}; -CONSTEXPR UINT8 SHADER_SOURCE_UNLITMESH_FRAG[2116] = { -0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x4e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x7,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x10,0x0,0x3,0x0,0x4,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x3,0x0,0x9,0x0,0x0,0x0,0x75,0x76,0x0,0x0,0x5,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x69,0x6e,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x0,0x5,0x0,0x8,0x0,0xd,0x0,0x0,0x0,0x55,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x42,0x75,0x66,0x66,0x65,0x72,0x4f,0x62,0x6a,0x65,0x63,0x74,0x32,0x0,0x0,0x0,0x0,0x6,0x0,0x7,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6c,0x6c,0x61,0x78,0x46,0x61,0x63,0x74,0x6f,0x72,0x0,0x0,0x5,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x75,0x62,0x6f,0x32,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x1d,0x0,0x0,0x0,0x55,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x42,0x75,0x66,0x66,0x65,0x72,0x4f,0x62,0x6a,0x65,0x63,0x74,0x0,0x6,0x0,0x7,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x63,0x6f,0x6c,0x6f,0x72,0x4f,0x76,0x65,0x72,0x6c,0x61,0x79,0x0,0x0,0x0,0x0,0x6,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x66,0x6c,0x69,0x70,0x56,0x0,0x0,0x0,0x6,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x66,0x6c,0x69,0x70,0x48,0x0,0x0,0x0,0x5,0x0,0x3,0x0,0x1f,0x0,0x0,0x0,0x75,0x62,0x6f,0x0,0x5,0x0,0x5,0x0,0x39,0x0,0x0,0x0,0x6f,0x75,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x3d,0x0,0x0,0x0,0x74,0x65,0x78,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x0,0x0,0x47,0x0,0x4,0x0,0xb,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0xd,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x1d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1f,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1f,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x39,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x3d,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x3d,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0xd,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x17,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x1e,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1e,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1e,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x21,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x14,0x0,0x2,0x0,0x24,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x0,0x0,0x80,0x3f,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x38,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x38,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x19,0x0,0x9,0x0,0x3a,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1b,0x0,0x3,0x0,0x3b,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x3c,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x41,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x46,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x49,0x0,0x0,0x0,0xcd,0xcc,0xcc,0x3d,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x9,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x12,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x81,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x1b,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x21,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0xab,0x0,0x5,0x0,0x24,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0xf7,0x0,0x3,0x0,0x27,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfa,0x0,0x4,0x0,0x25,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x26,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x2c,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0xf9,0x0,0x2,0x0,0x27,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x27,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x21,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0xab,0x0,0x5,0x0,0x24,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0xf7,0x0,0x3,0x0,0x32,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfa,0x0,0x4,0x0,0x30,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x31,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x37,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0xf9,0x0,0x2,0x0,0x32,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x32,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x3b,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x1c,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x41,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x85,0x0,0x5,0x0,0x1c,0x0,0x0,0x0,0x44,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x39,0x0,0x0,0x0,0x44,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x46,0x0,0x0,0x0,0x47,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x45,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x48,0x0,0x0,0x0,0x47,0x0,0x0,0x0,0xb8,0x0,0x5,0x0,0x24,0x0,0x0,0x0,0x4a,0x0,0x0,0x0,0x48,0x0,0x0,0x0,0x49,0x0,0x0,0x0,0xf7,0x0,0x3,0x0,0x4c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfa,0x0,0x4,0x0,0x4a,0x0,0x0,0x0,0x4b,0x0,0x0,0x0,0x4c,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x4b,0x0,0x0,0x0,0xfc,0x0,0x1,0x0,0xf8,0x0,0x2,0x0,0x4c,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,}; +CONSTEXPR UINT8 SHADER_SOURCE_UNLITMESH_FRAG[1556] = { +0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x37,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x7,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x10,0x0,0x3,0x0,0x4,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x3,0x0,0x9,0x0,0x0,0x0,0x75,0x76,0x0,0x0,0x5,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x69,0x6e,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x0,0x5,0x0,0x8,0x0,0xd,0x0,0x0,0x0,0x55,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x42,0x75,0x66,0x66,0x65,0x72,0x4f,0x62,0x6a,0x65,0x63,0x74,0x32,0x0,0x0,0x0,0x0,0x6,0x0,0x7,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6c,0x6c,0x61,0x78,0x46,0x61,0x63,0x74,0x6f,0x72,0x0,0x0,0x5,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x75,0x62,0x6f,0x32,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x1e,0x0,0x0,0x0,0x6f,0x75,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x22,0x0,0x0,0x0,0x74,0x65,0x78,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x0,0x0,0x5,0x0,0x7,0x0,0x26,0x0,0x0,0x0,0x55,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x42,0x75,0x66,0x66,0x65,0x72,0x4f,0x62,0x6a,0x65,0x63,0x74,0x0,0x6,0x0,0x7,0x0,0x26,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x63,0x6f,0x6c,0x6f,0x72,0x4f,0x76,0x65,0x72,0x6c,0x61,0x79,0x0,0x0,0x0,0x0,0x5,0x0,0x3,0x0,0x28,0x0,0x0,0x0,0x75,0x62,0x6f,0x0,0x47,0x0,0x4,0x0,0xb,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0xd,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0xd,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0xf,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1e,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x22,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x22,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x26,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x26,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0xd,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xe,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x17,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1d,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1d,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x19,0x0,0x9,0x0,0x1f,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1b,0x0,0x3,0x0,0x20,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x21,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x3,0x0,0x26,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x27,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x27,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x29,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x15,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x2e,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0xcd,0xcc,0xcc,0x3d,0x14,0x0,0x2,0x0,0x32,0x0,0x0,0x0,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x9,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x12,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x81,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x17,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x1b,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x20,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x1c,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x29,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x85,0x0,0x5,0x0,0x1c,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x1e,0x0,0x0,0x0,0x2c,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x2e,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0xb8,0x0,0x5,0x0,0x32,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0xf7,0x0,0x3,0x0,0x35,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfa,0x0,0x4,0x0,0x33,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x34,0x0,0x0,0x0,0xfc,0x0,0x1,0x0,0xf8,0x0,0x2,0x0,0x35,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,}; } // namespace ia::iae diff --git a/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp b/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp index 3eeb45e..68228ca 100644 --- a/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp @@ -76,11 +76,16 @@ namespace ia::iae return m_sortOffset; } - FLOAT32& ParallaxFactor() + FLOAT32 &ParallaxFactor() { return m_parallaxFactor; } + BOOL &ReverseAnimation() + { + return m_reverseAnimation; + } + public: VOID Draw(); VOID Update(); @@ -88,7 +93,10 @@ namespace ia::iae private: VOID UpdateAnimation(); + AnimationKeyFrame GetKeyFrame(IN INT32 index); + private: + BOOL m_reverseAnimation{}; FLOAT32 m_parallaxFactor{0.0f}; FLOAT32 m_sortOffset{}; BOOL m_isFlippedV{false}; diff --git a/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp b/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp index 203cda5..8d0a164 100644 --- a/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp @@ -44,13 +44,15 @@ namespace ia::iae STATIC VOID BeginFrame(); STATIC VOID EndFrame(); - STATIC VOID BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4& colorOverlay); + STATIC VOID BindTexture(IN Handle handle, IN CONST glm::vec4& colorOverlay); STATIC VOID Draw(IN FLOAT32 sortOffset, IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount); STATIC VOID Draw(IN FLOAT32 sortOffset, IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount); STATIC Camera2D* GetCamera(); + STATIC VOID SetFlipH(IN BOOL value); + STATIC VOID SetFlipV(IN BOOL value); STATIC VOID SetParallaxFactor(IN FLOAT32 value); public: