1
0
forked from mirrors/0ad

Replaces native GL types by backend format in vertex attributes in CShaderProgram.

This was SVN commit r26594.
This commit is contained in:
vladislavbelov
2022-03-07 02:21:05 +00:00
parent 36faf3bb4f
commit 647fccd410
24 changed files with 289 additions and 102 deletions
+12 -6
View File
@@ -126,7 +126,8 @@ void CDebugRenderer::DrawLine(
#undef ADD
debugLineShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
debugLineShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
debugLineShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
@@ -177,7 +178,8 @@ void CDebugRenderer::DrawCircle(const CVector3D& origin, const float radius, con
#undef ADD
debugCircleShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
debugCircleShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
debugCircleShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
@@ -253,7 +255,8 @@ void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& colo
ADD(intermediatePoints[3]);
}
overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
overlayShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
overlayShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
@@ -271,7 +274,8 @@ void CDebugRenderer::DrawCameraFrustum(const CCamera& camera, const CColor& colo
ADD(farPoints[nextI]);
}
overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
overlayShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
overlayShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
#undef ADD
@@ -325,7 +329,8 @@ void CDebugRenderer::DrawBoundingBox(
#undef ADD_FACE
shader->VertexPointer(3, GL_FLOAT, 3 * sizeof(float), data.data());
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 3 * sizeof(float), data.data());
shader->AssertPointersBound();
deviceCommandContext->Draw(0, 6*6);
@@ -371,7 +376,8 @@ void CDebugRenderer::DrawBrush(const CBrush& brush, const CColor& color, bool wi
#undef ADD_VERT
shader->VertexPointer(3, GL_FLOAT, 3 * sizeof(float), data.data());
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 3 * sizeof(float), data.data());
shader->AssertPointersBound();
deviceCommandContext->Draw(0, data.size() / 5);
+6 -3
View File
@@ -201,9 +201,12 @@ void CDecalRData::RenderDecals(
const GLsizei stride = sizeof(SDecalVertex);
SDecalVertex* base = (SDecalVertex*)batch.vertices->m_Owner->Bind(deviceCommandContext);
shader->VertexPointer(3, GL_FLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(GL_FLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, stride, &base->m_UV[0]);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, stride, &base->m_UV[0]);
}
shader->AssertPointersBound();
+20 -4
View File
@@ -203,10 +203,18 @@ void ShaderModelVertexRenderer::PrepareModelDef(
GLsizei stride = (GLsizei)m->shadermodeldef->m_Array.GetStride();
if (streamflags & STREAM_UV0)
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, stride, base + m->shadermodeldef->m_UVs[0].offset);
{
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, stride,
base + m->shadermodeldef->m_UVs[0].offset);
}
if ((streamflags & STREAM_UV1) && def.GetNumUVsPerVertex() >= 2)
shader->TexCoordPointer(GL_TEXTURE1, 2, GL_FLOAT, stride, base + m->shadermodeldef->m_UVs[1].offset);
{
shader->TexCoordPointer(
GL_TEXTURE1, Renderer::Backend::Format::R32G32_SFLOAT, stride,
base + m->shadermodeldef->m_UVs[1].offset);
}
}
@@ -225,10 +233,18 @@ void ShaderModelVertexRenderer::RenderModel(
deviceCommandContext->SetIndexBuffer(m->shadermodeldef->m_IndexArray.GetBuffer());
if (streamflags & STREAM_POS)
shader->VertexPointer(3, GL_FLOAT, stride, base + shadermodel->m_Position.offset);
{
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride,
base + shadermodel->m_Position.offset);
}
if (streamflags & STREAM_NORMAL)
shader->NormalPointer(GL_FLOAT, stride, base + shadermodel->m_Normal.offset);
{
shader->NormalPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride,
base + shadermodel->m_Normal.offset);
}
shader->AssertPointersBound();
+26 -6
View File
@@ -331,20 +331,36 @@ void InstancingModelRenderer::PrepareModelDef(
deviceCommandContext->SetIndexBuffer(m->imodeldef->m_IndexArray.GetBuffer());
if (streamflags & STREAM_POS)
shader->VertexPointer(3, GL_FLOAT, stride, base + m->imodeldef->m_Position.offset);
{
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride,
base + m->imodeldef->m_Position.offset);
}
if (streamflags & STREAM_NORMAL)
shader->NormalPointer(GL_FLOAT, stride, base + m->imodeldef->m_Normal.offset);
{
shader->NormalPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride,
base + m->imodeldef->m_Normal.offset);
}
if (m->calculateTangents)
shader->VertexAttribPointer(str_a_tangent, 4, GL_FLOAT, GL_FALSE, stride, base + m->imodeldef->m_Tangent.offset);
{
shader->VertexAttribPointer(
str_a_tangent, Renderer::Backend::Format::R32G32B32A32_SFLOAT,
GL_FALSE, stride, base + m->imodeldef->m_Tangent.offset);
}
// The last UV set is STREAM_UV3
for (size_t uv = 0; uv < 4; ++uv)
if (streamflags & (STREAM_UV0 << uv))
{
if (def.GetNumUVsPerVertex() >= uv + 1)
shader->TexCoordPointer(GL_TEXTURE0 + uv, 2, GL_FLOAT, stride, base + m->imodeldef->m_UVs[uv].offset);
{
shader->TexCoordPointer(
GL_TEXTURE0 + uv, Renderer::Backend::Format::R32G32_SFLOAT, stride,
base + m->imodeldef->m_UVs[uv].offset);
}
else
ONCE(LOGERROR("Model '%s' has no UV%d set.", def.GetName().string8().c_str(), uv));
}
@@ -352,8 +368,12 @@ void InstancingModelRenderer::PrepareModelDef(
// GPU skinning requires extra attributes to compute positions/normals
if (m->gpuSkinning)
{
shader->VertexAttribPointer(str_a_skinJoints, 4, GL_UNSIGNED_BYTE, GL_FALSE, stride, base + m->imodeldef->m_BlendJoints.offset);
shader->VertexAttribPointer(str_a_skinWeights, 4, GL_UNSIGNED_BYTE, GL_TRUE, stride, base + m->imodeldef->m_BlendWeights.offset);
shader->VertexAttribPointer(
str_a_skinJoints, Renderer::Backend::Format::R8G8B8A8_UINT, GL_FALSE,
stride, base + m->imodeldef->m_BlendJoints.offset);
shader->VertexAttribPointer(
str_a_skinWeights, Renderer::Backend::Format::R8G8B8A8_UNORM, GL_TRUE,
stride, base + m->imodeldef->m_BlendWeights.offset);
}
shader->AssertPointersBound();
+10 -7
View File
@@ -573,16 +573,16 @@ void OverlayRenderer::RenderQuadOverlays(
int streamflags = shader->GetStreamFlags();
if (streamflags & STREAM_POS)
shader->VertexPointer(m->quadAttributePos.elems, m->quadAttributePos.type, vertexStride, vertexBase + m->quadAttributePos.offset);
shader->VertexPointer(Renderer::Backend::Format::R32G32B32_SFLOAT, vertexStride, vertexBase + m->quadAttributePos.offset);
if (streamflags & STREAM_UV0)
shader->TexCoordPointer(GL_TEXTURE0, m->quadAttributeUV.elems, m->quadAttributeUV.type, vertexStride, vertexBase + m->quadAttributeUV.offset);
shader->TexCoordPointer(GL_TEXTURE0, Renderer::Backend::Format::R16G16_SINT, vertexStride, vertexBase + m->quadAttributeUV.offset);
if (streamflags & STREAM_UV1)
shader->TexCoordPointer(GL_TEXTURE1, m->quadAttributeUV.elems, m->quadAttributeUV.type, vertexStride, vertexBase + m->quadAttributeUV.offset);
shader->TexCoordPointer(GL_TEXTURE1, Renderer::Backend::Format::R16G16_SINT, vertexStride, vertexBase + m->quadAttributeUV.offset);
if (streamflags & STREAM_COLOR)
shader->ColorPointer(m->quadAttributeColor.elems, m->quadAttributeColor.type, vertexStride, vertexBase + m->quadAttributeColor.offset);
shader->ColorPointer(Renderer::Backend::Format::R32G32B32A32_SFLOAT, vertexStride, vertexBase + m->quadAttributeColor.offset);
shader->AssertPointersBound();
deviceCommandContext->DrawIndexed(m->quadIndices.GetOffset() + batchRenderData.m_IndicesBase, batchNumQuads * 6, 0);
@@ -644,7 +644,8 @@ void OverlayRenderer::RenderForegroundOverlays(
{0.0f, 0.0f},
};
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, sizeof(CVector2D), &uvs[0]);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, sizeof(CVector2D), &uvs[0]);
for (size_t i = 0; i < m->sprites.size(); ++i)
{
@@ -667,7 +668,8 @@ void OverlayRenderer::RenderForegroundOverlays(
sprite->m_Position + right*sprite->m_X0 + up*sprite->m_Y1
};
shader->VertexPointer(3, GL_FLOAT, sizeof(CVector3D), &position[0].X);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, sizeof(CVector3D), &position[0].X);
deviceCommandContext->Draw(0, 6);
@@ -773,7 +775,8 @@ void OverlayRenderer::RenderSphereOverlays(
m->GenerateSphere();
shader->VertexPointer(3, GL_FLOAT, 0, &m->sphereVertexes[0]);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, &m->sphereVertexes[0]);
for (size_t i = 0; i < m->spheres.size(); ++i)
{
+35 -14
View File
@@ -803,9 +803,12 @@ void CPatchRData::RenderBases(
{
GLsizei stride = sizeof(SBaseVertex);
SBaseVertex *base = (SBaseVertex *)itv->first->Bind(deviceCommandContext);
shader->VertexPointer(3, GL_FLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(GL_FLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(GL_TEXTURE0, 3, GL_FLOAT, stride, &base->m_Position[0]);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position[0]);
shader->AssertPointersBound();
@@ -1029,10 +1032,14 @@ void CPatchRData::RenderBlends(
GLsizei stride = sizeof(SBlendVertex);
SBlendVertex *base = (SBlendVertex *)itv->first->Bind(deviceCommandContext);
shader->VertexPointer(3, GL_FLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(GL_FLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(GL_TEXTURE0, 3, GL_FLOAT, stride, &base->m_Position[0]);
shader->TexCoordPointer(GL_TEXTURE1, 2, GL_FLOAT, stride, &base->m_AlphaUVs[0]);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position[0]);
shader->NormalPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Normal[0]);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position[0]);
shader->TexCoordPointer(
GL_TEXTURE1, Renderer::Backend::Format::R32G32_SFLOAT, stride, &base->m_AlphaUVs[0]);
}
shader->AssertPointersBound();
@@ -1098,9 +1105,13 @@ void CPatchRData::RenderStreams(
GLsizei stride = sizeof(SBaseVertex);
SBaseVertex *base = (SBaseVertex *)streamBatch.first->Bind(deviceCommandContext);
shader->VertexPointer(3, GL_FLOAT, stride, &base->m_Position);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position);
if (bindPositionAsTexCoord)
shader->TexCoordPointer(GL_TEXTURE0, 3, GL_FLOAT, stride, &base->m_Position);
{
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position);
}
shader->AssertPointersBound();
@@ -1174,7 +1185,8 @@ void CPatchRData::RenderSides(
// setup data pointers
GLsizei stride = sizeof(SSideVertex);
shader->VertexPointer(3, GL_FLOAT, stride, &base->m_Position);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base->m_Position);
}
shader->AssertPointersBound();
@@ -1431,9 +1443,14 @@ void CPatchRData::RenderWaterSurface(
// Setup data pointers.
const GLsizei stride = sizeof(SWaterVertex);
shader->VertexPointer(3, GL_FLOAT, stride, &base[m_VBWater->m_Index].m_Position);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base[m_VBWater->m_Index].m_Position);
if (bindWaterData)
shader->VertexAttribPointer(str_a_waterInfo, 2, GL_FLOAT, false, stride, &base[m_VBWater->m_Index].m_WaterData);
{
shader->VertexAttribPointer(
str_a_waterInfo, Renderer::Backend::Format::R32G32_SFLOAT, false, stride,
&base[m_VBWater->m_Index].m_WaterData);
}
shader->AssertPointersBound();
@@ -1460,8 +1477,12 @@ void CPatchRData::RenderWaterShore(
SWaterVertex* base = reinterpret_cast<SWaterVertex*>(m_VBWaterShore->m_Owner->Bind(deviceCommandContext));
const GLsizei stride = sizeof(SWaterVertex);
shader->VertexPointer(3, GL_FLOAT, stride, &base[m_VBWaterShore->m_Index].m_Position);
shader->VertexAttribPointer(str_a_waterInfo, 2, GL_FLOAT, false, stride, &base[m_VBWaterShore->m_Index].m_WaterData);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride,
&base[m_VBWaterShore->m_Index].m_Position);
shader->VertexAttribPointer(
str_a_waterInfo, Renderer::Backend::Format::R32G32_SFLOAT, false, stride,
&base[m_VBWaterShore->m_Index].m_WaterData);
shader->AssertPointersBound();
+16 -8
View File
@@ -228,8 +228,10 @@ void CPostprocManager::ApplyBlurDownscale2x(
1.0f, 0.0f,
1.0f, 1.0f
};
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, quadTex);
shader->VertexPointer(2, GL_FLOAT, 0, quadVerts);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, 0, quadTex);
shader->VertexPointer(
Renderer::Backend::Format::R32G32_SFLOAT, 0, quadVerts);
shader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
@@ -284,8 +286,10 @@ void CPostprocManager::ApplyBlurGauss(
1.0f, 0.0f,
1.0f, 1.0f
};
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, quadTex);
shader->VertexPointer(2, GL_FLOAT, 0, quadVerts);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, 0, quadTex);
shader->VertexPointer(
Renderer::Backend::Format::R32G32_SFLOAT, 0, quadVerts);
shader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
@@ -309,8 +313,10 @@ void CPostprocManager::ApplyBlurGauss(
g_Renderer.SetViewport(vp);
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, quadTex);
shader->VertexPointer(2, GL_FLOAT, 0, quadVerts);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, 0, quadTex);
shader->VertexPointer(
Renderer::Backend::Format::R32G32_SFLOAT, 0, quadVerts);
shader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
@@ -429,8 +435,10 @@ void CPostprocManager::ApplyEffect(
1.0f, 0.0f,
1.0f, 1.0f
};
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, quadTex);
shader->VertexPointer(2, GL_FLOAT, 0, quadVerts);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, 0, quadTex);
shader->VertexPointer(
Renderer::Backend::Format::R32G32_SFLOAT, 0, quadVerts);
shader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
+4 -2
View File
@@ -747,8 +747,10 @@ void ShadowMap::RenderDebugTexture(
1,0, 0,1, 1,1
};
texShader->VertexPointer(2, GL_FLOAT, 0, boxVerts);
texShader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, 0, boxUV);
texShader->VertexPointer(
Renderer::Backend::Format::R32G32_SFLOAT, 0, boxVerts);
texShader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, 0, boxUV);
texShader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
+2 -1
View File
@@ -493,7 +493,8 @@ void SilhouetteRenderer::RenderDebugOverlays(
r.x1, r.y1,
r.x0, r.y1,
};
shader->VertexPointer(2, GL_SHORT, 0, verts);
shader->VertexPointer(
Renderer::Backend::Format::R16G16_SINT, 0, verts);
deviceCommandContext->Draw(0, 6);
}
+2 -2
View File
@@ -243,9 +243,9 @@ void SkyManager::RenderSky(
const GLsizei stride = static_cast<GLsizei>(m_VertexArray.GetStride());
shader->VertexPointer(
3, GL_FLOAT, stride, base + m_AttributePosition.offset);
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, base + m_AttributePosition.offset);
shader->TexCoordPointer(
GL_TEXTURE0, 3, GL_FLOAT, stride, base + m_AttributeUV.offset);
GL_TEXTURE0, Renderer::Backend::Format::R32G32B32_SFLOAT, stride, base + m_AttributeUV.offset);
shader->AssertPointersBound();
deviceCommandContext->Draw(0, m_VertexArray.GetNumberOfVertices());
+4 -2
View File
@@ -229,7 +229,8 @@ void TerrainOverlay::RenderTile(
overlayShader->Uniform(str_transform, g_Renderer.GetSceneRenderer().GetViewCamera().GetViewProjection());
overlayShader->Uniform(str_color, color);
overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
overlayShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
overlayShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
@@ -297,7 +298,8 @@ void TerrainOverlay::RenderTileOutline(
overlayShader->Uniform(str_transform, g_Renderer.GetSceneRenderer().GetViewCamera().GetViewProjection());
overlayShader->Uniform(str_color, color);
overlayShader->VertexPointer(3, GL_FLOAT, 0, vertices.data());
overlayShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, 0, vertices.data());
overlayShader->AssertPointersBound();
deviceCommandContext->Draw(0, vertices.size() / 3);
+4 -2
View File
@@ -208,8 +208,10 @@ void TerrainRenderer::RenderTerrainOverlayTexture(
};
const GLsizei stride = sizeof(float) * 3;
debugOverlayShader->VertexPointer(3, GL_FLOAT, stride, waterPos);
debugOverlayShader->TexCoordPointer(GL_TEXTURE0, 3, GL_FLOAT, stride, waterPos);
debugOverlayShader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, waterPos);
debugOverlayShader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R32G32B32_SFLOAT, stride, waterPos);
debugOverlayShader->AssertPointersBound();
deviceCommandContext->Draw(0, 6);
+3 -3
View File
@@ -60,13 +60,13 @@ void CTexturedLineRData::Render(
reinterpret_cast<CTexturedLineRData::SVertex*>(m_VB->m_Owner->Bind(deviceCommandContext));
if (streamFlags & STREAM_POS)
shader->VertexPointer(3, GL_FLOAT, stride, &vertexBase->m_Position[0]);
shader->VertexPointer(Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &vertexBase->m_Position[0]);
if (streamFlags & STREAM_UV0)
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_FLOAT, stride, &vertexBase->m_UVs[0]);
shader->TexCoordPointer(GL_TEXTURE0, Renderer::Backend::Format::R32G32_SFLOAT, stride, &vertexBase->m_UVs[0]);
if (streamFlags & STREAM_UV1)
shader->TexCoordPointer(GL_TEXTURE1, 2, GL_FLOAT, stride, &vertexBase->m_UVs[0]);
shader->TexCoordPointer(GL_TEXTURE1, Renderer::Backend::Format::R32G32_SFLOAT, stride, &vertexBase->m_UVs[0]);
shader->AssertPointersBound();
+12 -7
View File
@@ -799,13 +799,18 @@ void WaterManager::RenderWaves(
// setup data pointers
GLsizei stride = sizeof(SWavesVertex);
shader->VertexPointer(3, GL_FLOAT, stride, &base[VBchunk->m_Index].m_BasePosition);
shader->TexCoordPointer(GL_TEXTURE0, 2, GL_UNSIGNED_BYTE, stride, &base[VBchunk->m_Index].m_UV);
// NormalPointer(gl_FLOAT, stride, &base[m_VBWater->m_Index].m_UV)
glVertexAttribPointerARB(2, 2, GL_FLOAT, GL_FALSE, stride, &base[VBchunk->m_Index].m_PerpVect); // replaces commented above because my normal is vec2
shader->VertexAttribPointer(str_a_apexPosition, 3, GL_FLOAT, false, stride, &base[VBchunk->m_Index].m_ApexPosition);
shader->VertexAttribPointer(str_a_splashPosition, 3, GL_FLOAT, false, stride, &base[VBchunk->m_Index].m_SplashPosition);
shader->VertexAttribPointer(str_a_retreatPosition, 3, GL_FLOAT, false, stride, &base[VBchunk->m_Index].m_RetreatPosition);
shader->VertexPointer(
Renderer::Backend::Format::R32G32B32_SFLOAT, stride, &base[VBchunk->m_Index].m_BasePosition);
shader->TexCoordPointer(
GL_TEXTURE0, Renderer::Backend::Format::R8G8_UINT, stride, &base[VBchunk->m_Index].m_UV);
shader->NormalPointer(
Renderer::Backend::Format::R32G32_SFLOAT, stride, &base[VBchunk->m_Index].m_PerpVect);
shader->VertexAttribPointer(
str_a_apexPosition, Renderer::Backend::Format::R32G32B32_SFLOAT, false, stride, &base[VBchunk->m_Index].m_ApexPosition);
shader->VertexAttribPointer(
str_a_splashPosition, Renderer::Backend::Format::R32G32B32_SFLOAT, false, stride, &base[VBchunk->m_Index].m_SplashPosition);
shader->VertexAttribPointer(
str_a_retreatPosition, Renderer::Backend::Format::R32G32B32_SFLOAT, false, stride, &base[VBchunk->m_Index].m_RetreatPosition);
shader->AssertPointersBound();
+6
View File
@@ -27,12 +27,18 @@ namespace Backend
enum class Format
{
UNDEFINED,
R8G8_UNORM,
R8G8_UINT,
R8G8B8_UNORM,
R8G8B8A8_UNORM,
R8G8B8A8_UINT,
A8_UNORM,
L8_UNORM,
R16_SINT,
R16G16_SINT,
R32_SFLOAT,
R32G32_SFLOAT,
R32G32B32_SFLOAT,
+3
View File
@@ -872,6 +872,9 @@ bool CDevice::IsTextureFormatSupported(const Format format) const
case Format::BC3_UNORM:
supported = m_Capabilities.S3TC;
break;
default:
break;
}
return supported;
}