forked from 0ad/0ad
Reduces the uniform size of an instancing transform of overlay solid shader.
This was SVN commit r27209.
This commit is contained in:
parent
3978149386
commit
f4c730a887
@ -2,7 +2,7 @@
|
||||
|
||||
PARAM transform[4] = { program.local[0..3] };
|
||||
#if DEBUG_TEXTURED
|
||||
PARAM textureTransform[4] = { program.local[4..7] };
|
||||
PARAM textureTransform = program.local[4];
|
||||
#endif
|
||||
|
||||
ATTRIB position = vertex.position;
|
||||
@ -18,8 +18,8 @@ DP4 result.position.w, transform[3], position;
|
||||
#if DEBUG_TEXTURED
|
||||
OUTPUT v_tex = result.texcoord[0];
|
||||
|
||||
DP4 v_tex.x, textureTransform[0], uv;
|
||||
DP4 v_tex.y, textureTransform[1], uv;
|
||||
MUL v_tex.x, textureTransform.x, uv.x;
|
||||
MUL v_tex.y, textureTransform.y, uv.z;
|
||||
#endif
|
||||
|
||||
END
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
<vertex file="arb/debug_overlay.vp">
|
||||
<uniform name="transform" loc="0" type="mat4"/>
|
||||
<uniform name="textureTransform" loc="4" type="mat4" if="DEBUG_TEXTURED"/>
|
||||
<uniform name="textureTransform" loc="4" type="vec2" if="DEBUG_TEXTURED"/>
|
||||
<stream name="pos"/>
|
||||
<stream name="uv0" if="DEBUG_TEXTURED"/>
|
||||
</vertex>
|
||||
|
@ -1,13 +1,13 @@
|
||||
!!ARBvp1.0
|
||||
|
||||
PARAM transform[4] = { program.local[0..3] };
|
||||
PARAM instancingTransform[4] = { program.local[4..7] };
|
||||
PARAM instancingTransform = program.local[4];
|
||||
|
||||
TEMP position;
|
||||
|
||||
DP4 position.x, instancingTransform[0], vertex.position;
|
||||
DP4 position.y, instancingTransform[1], vertex.position;
|
||||
DP4 position.z, instancingTransform[2], vertex.position;
|
||||
MAD position.x, vertex.position.x, instancingTransform.w, instancingTransform.x;
|
||||
MAD position.y, vertex.position.y, instancingTransform.w, instancingTransform.y;
|
||||
MAD position.z, vertex.position.z, instancingTransform.w, instancingTransform.z;
|
||||
MOV position.w, 1.0;
|
||||
|
||||
DP4 result.position.x, transform[0], position;
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
<vertex file="arb/overlay_solid.vp">
|
||||
<uniform name="transform" loc="0" type="mat4"/>
|
||||
<uniform name="instancingTransform" loc="4" type="mat4"/>
|
||||
<uniform name="instancingTransform" loc="4" type="vec4"/>
|
||||
<stream name="pos"/>
|
||||
</vertex>
|
||||
|
||||
|
@ -3,12 +3,12 @@
|
||||
#include "common/vertex.h"
|
||||
|
||||
uniform mat4 transform;
|
||||
uniform mat4 instancingTransform;
|
||||
uniform vec4 instancingTransform;
|
||||
|
||||
VERTEX_INPUT_ATTRIBUTE(0, vec3, a_vertex);
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 worldPos = instancingTransform * vec4(a_vertex, 1.0);
|
||||
vec4 worldPos = vec4(a_vertex * instancingTransform.w + instancingTransform.xyz, 1.0);
|
||||
OUTPUT_VERTEX_POSITION(transform * worldPos);
|
||||
}
|
||||
|
@ -795,15 +795,10 @@ void OverlayRenderer::RenderSphereOverlays(
|
||||
deviceCommandContext->SetIndexBufferData(
|
||||
m->sphereIndexes.data(), m->sphereIndexes.size() * sizeof(m->sphereIndexes[0]));
|
||||
|
||||
for (size_t i = 0; i < m->spheres.size(); ++i)
|
||||
for (const SOverlaySphere* sphere : m->spheres)
|
||||
{
|
||||
SOverlaySphere* sphere = m->spheres[i];
|
||||
|
||||
CMatrix3D instancingTransform;
|
||||
instancingTransform.SetIdentity();
|
||||
instancingTransform.Scale(
|
||||
sphere->m_Radius, sphere->m_Radius, sphere->m_Radius);
|
||||
instancingTransform.Translate(sphere->m_Center);
|
||||
const CVector4D instancingTransform{
|
||||
sphere->m_Center.X, sphere->m_Center.Y, sphere->m_Center.Z, sphere->m_Radius};
|
||||
|
||||
deviceCommandContext->SetUniform(
|
||||
shader->GetBindingSlot(str_instancingTransform),
|
||||
|
@ -363,9 +363,8 @@ void CCmpUnitRenderer::Interpolate(float frameTime, float frameOffset)
|
||||
m_DebugSpheres.clear();
|
||||
if (m_EnableDebugOverlays)
|
||||
{
|
||||
for (size_t i = 0; i < m_Units.size(); i++)
|
||||
for (const SUnit& unit : m_Units)
|
||||
{
|
||||
SUnit& unit = m_Units[i];
|
||||
if (!(unit.actor && unit.inWorld))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user