1
0
forked from 0ad/0ad

Reduces the uniform size of a texture transform of debug overlay shader.

This was SVN commit r27208.
This commit is contained in:
Vladislav Belov 2022-11-06 19:40:47 +00:00
parent 097725e1e0
commit 3978149386
4 changed files with 16 additions and 16 deletions

View File

@ -4,21 +4,22 @@
uniform mat4 transform;
#if DEBUG_TEXTURED
uniform mat4 textureTransform;
uniform vec2 textureTransform;
#endif
#if DEBUG_TEXTURED
varying vec2 v_tex;
#endif
VERTEX_INPUT_ATTRIBUTE(0, vec3, a_vertex);
#if DEBUG_TEXTURED
VERTEX_INPUT_ATTRIBUTE(1, vec3, a_uv0);
varying vec2 v_tex;
#endif
void main()
{
#if DEBUG_TEXTURED
v_tex = (textureTransform * vec4(a_uv0, 1.0)).xy;
v_tex = textureTransform.xy * a_uv0.xz;
#endif
OUTPUT_VERTEX_POSITION(transform * vec4(a_vertex, 1.0));
}

View File

@ -25,6 +25,7 @@
#include "graphics/Terrain.h"
#include "lib/bits.h"
#include "maths/MathUtil.h"
#include "maths/Vector2D.h"
#include "ps/CStrInternStatic.h"
#include "ps/Game.h"
#include "ps/Profile.h"
@ -339,14 +340,11 @@ void TerrainTextureOverlay::RenderAfterWater(
free(data);
CMatrix3D matrix;
matrix.SetZero();
matrix._11 = m_TexelsPerTile / (m_Texture->GetWidth() * TERRAIN_TILE_SIZE);
matrix._23 = m_TexelsPerTile / (m_Texture->GetHeight() * TERRAIN_TILE_SIZE);
matrix._44 = 1;
const CVector2D textureTransform{
m_TexelsPerTile / (m_Texture->GetWidth() * TERRAIN_TILE_SIZE),
m_TexelsPerTile / (m_Texture->GetHeight() * TERRAIN_TILE_SIZE)};
g_Renderer.GetSceneRenderer().GetTerrainRenderer().RenderTerrainOverlayTexture(
deviceCommandContext, cullGroup, matrix, m_Texture.get());
deviceCommandContext, cullGroup, textureTransform, m_Texture.get());
}
SColor4ub TerrainTextureOverlay::GetColor(size_t idx, u8 alpha) const

View File

@ -32,6 +32,7 @@
#include "graphics/TextRenderer.h"
#include "graphics/TextureManager.h"
#include "maths/MathUtil.h"
#include "maths/Vector2D.h"
#include "ps/CLogger.h"
#include "ps/CStrInternStatic.h"
#include "ps/Filesystem.h"
@ -162,7 +163,7 @@ void TerrainRenderer::EndFrame()
void TerrainRenderer::RenderTerrainOverlayTexture(
Renderer::Backend::IDeviceCommandContext* deviceCommandContext,
int cullGroup, CMatrix3D& textureMatrix,
int cullGroup, const CVector2D& textureTransform,
Renderer::Backend::ITexture* texture)
{
ENSURE(m->phase == Phase_Render);
@ -183,7 +184,7 @@ void TerrainRenderer::RenderTerrainOverlayTexture(
deviceCommandContext->SetUniform(
debugOverlayShader->GetBindingSlot(str_transform), transform.AsFloatArray());
deviceCommandContext->SetUniform(
debugOverlayShader->GetBindingSlot(str_textureTransform), textureMatrix.AsFloatArray());
debugOverlayShader->GetBindingSlot(str_textureTransform), textureTransform.AsFloatArray());
CPatchRData::RenderStreams(deviceCommandContext, visiblePatches, true);
// To make the overlay visible over water, render an additional map-sized

View File

@ -31,11 +31,11 @@
class CCamera;
class CCanvas2D;
class CMatrix3D;
class CModelDecal;
class CPatch;
class CShaderDefines;
class CSimulation2;
class CVector2D;
class ShadowMap;
@ -167,7 +167,7 @@ public:
*/
void RenderTerrainOverlayTexture(
Renderer::Backend::IDeviceCommandContext* deviceCommandContext,
int cullGroup, CMatrix3D& textureMatrix, Renderer::Backend::ITexture* texture);
int cullGroup, const CVector2D& textureTransform, Renderer::Backend::ITexture* texture);
private:
TerrainRendererInternals* m;