Changeset 27136
- Timestamp:
- Oct 9, 2022, 12:44:51 PM (22 months ago)
- Location:
- ps/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
ps/trunk/binaries/data/mods/mod/shaders/arb/canvas2d.vp
r25590 r27136 1 1 !!ARBvp1.0 2 2 3 PARAM transform[4] = { program.local[0..3] }; 3 PARAM transform = program.local[0]; 4 PARAM translation = program.local[1]; 4 5 5 6 TEMP position; 6 7 7 DP4 position.x, transform[0], vertex.position; 8 DP4 position.y, transform[1], vertex.position; 8 MUL position, transform, vertex.position.xyxy; 9 ADD position.x, position.x, position.y; 10 ADD position.y, position.z, position.w; 11 ADD position, position, translation; 9 12 MOV position.z, 0.0; 10 13 MOV position.w, 1.0; -
ps/trunk/binaries/data/mods/mod/shaders/arb/canvas2d.xml
r25603 r27136 5 5 <stream name="pos"/> 6 6 <stream name="uv0"/> 7 <uniform name="transform" loc="0" type="mat4"/> 7 <uniform name="transform" loc="0" type="vec4"/> 8 <uniform name="translation" loc="1" type="vec2"/> 8 9 </vertex> 9 10 -
ps/trunk/binaries/data/mods/mod/shaders/glsl/canvas2d.vs
r25590 r27136 1 1 #version 110 2 2 3 uniform mat4 transform; 3 uniform vec4 transform; 4 uniform vec2 translation; 4 5 5 6 attribute vec2 a_vertex; … … 11 12 { 12 13 v_uv = a_uv0; 13 gl_Position = transform * vec4(a_vertex, 0.0, 1.0);14 gl_Position = , 0.0, 1.0); 14 15 } -
ps/trunk/source/graphics/Canvas2D.cpp
r27111 r27136 40 40 { 41 41 int32_t transform; 42 42 43 int32_t colorAdd; 43 44 int32_t colorMul; … … 112 113 113 114 BindingSlots.transform = shader->GetBindingSlot(str_transform); 115 114 116 BindingSlots.colorAdd = shader->GetBindingSlot(str_colorAdd); 115 117 BindingSlots.colorMul = shader->GetBindingSlot(str_colorMul); … … 118 120 119 121 const CMatrix3D transform = GetTransform(); 122 123 120 124 DeviceCommandContext->SetUniform( 121 BindingSlots.transform, transform.AsFloatArray()); 125 BindingSlots.transform, 126 transform._11, transform._21, transform._12, transform._22); 127 DeviceCommandContext->SetUniform( 128 BindingSlots.translation, Translation.AsFloatArray()); 122 129 } 123 130 … … 154 161 uint32_t HeightInPixels = 1; 155 162 float Scale = 1.0f; 163 164 156 165 157 166 Renderer::Backend::IDeviceCommandContext* DeviceCommandContext = nullptr; … … 441 450 m->BindingSlots.grayscaleFactor, 0.0f); 442 451 443 textRenderer.Render(m->DeviceCommandContext, m->Tech->GetShader(), m->GetTransform()); 452 textRenderer.Render( 453 m->DeviceCommandContext, m->Tech->GetShader(), m->TransformScale, m->Translation); 444 454 } 445 455 -
ps/trunk/source/graphics/TextRenderer.cpp
r26901 r27136 204 204 void CTextRenderer::Render( 205 205 Renderer::Backend::IDeviceCommandContext* deviceCommandContext, 206 Renderer::Backend::IShaderProgram* shader, const CMatrix3D& transform) 206 Renderer::Backend::IShaderProgram* shader, 207 const CVector2D& transformScale, const CVector2D& translation) 207 208 { 208 209 std::vector<u16> indexes; … … 226 227 227 228 const int32_t texBindingSlot = shader->GetBindingSlot(str_tex); 228 const int32_t trans formBindingSlot = shader->GetBindingSlot(str_transform);229 const int32_t trans); 229 230 const int32_t colorAddBindingSlot = shader->GetBindingSlot(str_colorAdd); 230 231 const int32_t colorMulBindingSlot = shader->GetBindingSlot(str_colorMul); 231 232 232 bool trans formChanged = false;233 bool transChanged = false; 233 234 234 235 CTexture* lastTexture = nullptr; … … 248 249 if (batch.translate.X != 0.0f || batch.translate.Y != 0.0f) 249 250 { 250 CMatrix3D localTransform; 251 localTransform.SetTranslation(batch.translate.X, batch.translate.Y, 0.0f); 252 localTransform = transform * localTransform; 253 deviceCommandContext->SetUniform(transformBindingSlot, localTransform.AsFloatArray()); 254 transformChanged = true; 251 const CVector2D localTranslation = 252 translation + CVector2D(batch.translate.X * transformScale.X, batch.translate.Y * transformScale.Y); 253 deviceCommandContext->SetUniform(translationBindingSlot, localTranslation.AsFloatArray()); 254 translationChanged = true; 255 255 } 256 256 … … 347 347 m_Batches.clear(); 348 348 349 if (trans formChanged)350 deviceCommandContext->SetUniform(trans formBindingSlot, transform.AsFloatArray());351 } 349 if (transChanged) 350 deviceCommandContext->SetUniform(trans.AsFloatArray()); 351 } -
ps/trunk/source/graphics/TextRenderer.h
r26858 r27136 106 106 void Render( 107 107 Renderer::Backend::IDeviceCommandContext* deviceCommandContext, 108 Renderer::Backend::IShaderProgram* shader, const CMatrix3D& transform); 108 Renderer::Backend::IShaderProgram* shader, 109 const CVector2D& transformScale, const CVector2D& translation); 109 110 110 111 private: -
ps/trunk/source/maths/Vector2D.h
r25152 r27136 1 /* Copyright (C) 202 1Wildfire Games.1 /* Copyright (C) 202 Wildfire Games. 2 2 * This file is part of 0 A.D. 3 3 * … … 18 18 #ifndef INCLUDED_VECTOR2D 19 19 #define INCLUDED_VECTOR2D 20 21 20 22 21 23 #include <math.h> … … 162 164 void operator-=(const CSize2D& size); 163 165 166 167 168 169 170 171 172 173 174 175 176 177 178 164 179 public: 165 180 float X, Y;
Note:
See TracChangeset
for help on using the changeset viewer.