More #ifdef's simplifications

This commit is contained in:
Deve
2016-07-11 22:55:32 +02:00
parent b25a4e874f
commit 01dfd7bc05
8 changed files with 29 additions and 64 deletions

View File

@@ -201,9 +201,7 @@ void CentralVideoSettings::init()
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, &param);
m_need_srgb_visual_workaround = (param != GL_SRGB);
}
#endif
#if defined(USE_GLES2)
#else
if (m_glsl == true)
{
hasArraysOfArrays = true;

View File

@@ -191,9 +191,7 @@ void initGL()
GLenum err = glewInit();
if (GLEW_OK != err)
Log::fatal("GLEW", "Glew initialisation failed with error %s", glewGetErrorString(err));
#endif
#if defined(USE_GLES2)
#else
glDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKKHRPROC)eglGetProcAddress("glDebugMessageCallbackKHR");
#endif

View File

@@ -458,10 +458,10 @@ void IrrDriver::initDevice()
if(m_device)
break;
#if !defined(USE_GLES2)
params.DriverType = video::EDT_OPENGL;
#else
#if defined(USE_GLES2)
params.DriverType = video::EDT_OGLES2;
#else
params.DriverType = video::EDT_OPENGL;
#endif
#if defined(ANDROID)
params.PrivateData = global_android_app;

View File

@@ -130,6 +130,7 @@ public:
} // render
}; // Gaussian3VBlurShader
#if !defined(USE_GLES2)
// ============================================================================
class ComputeGaussian6VBlurShader : public TextureShader<ComputeGaussian6VBlurShader, 1,
core::vector2df,
@@ -139,13 +140,11 @@ public:
GLuint m_dest_tu;
ComputeGaussian6VBlurShader()
{
#if !defined(USE_GLES2)
loadProgram(OBJECT, GL_COMPUTE_SHADER, "gaussian6v.comp");
m_dest_tu = 1;
assignUniforms("pixel", "weights");
assignSamplerNames(0, "source", ST_BILINEAR_CLAMPED_FILTERED);
assignTextureUnit(m_dest_tu, "dest");
#endif
} // ComputeGaussian6VBlurShader
}; // ComputeGaussian6VBlurShader
@@ -158,13 +157,11 @@ public:
GLuint m_dest_tu;
ComputeGaussian6HBlurShader()
{
#if !defined(USE_GLES2)
loadProgram(OBJECT, GL_COMPUTE_SHADER, "gaussian6h.comp");
m_dest_tu = 1;
assignUniforms("pixel", "weights");
assignSamplerNames(0, "source", ST_BILINEAR_CLAMPED_FILTERED);
assignTextureUnit(m_dest_tu, "dest");
#endif
} // ComputeGaussian6HBlurShader
}; // ComputeGaussian6HBlurShader
@@ -177,15 +174,14 @@ public:
GLuint m_dest_tu;
ComputeShadowBlurHShader()
{
#if !defined(USE_GLES2)
loadProgram(OBJECT, GL_COMPUTE_SHADER, "blurshadowH.comp");
m_dest_tu = 1;
assignUniforms("pixel", "weights");
assignSamplerNames(0, "source", ST_NEARED_CLAMPED_FILTERED);
assignTextureUnit(m_dest_tu, "dest");
#endif
} // ComputeShadowBlurHShader
}; // ComputeShadowBlurHShader
#endif
// ============================================================================
class Gaussian6HBlurShader : public TextureShader<Gaussian6HBlurShader, 1,
@@ -316,6 +312,7 @@ public:
int width, int height)
{
#if !defined(USE_GLES2)
use();
glBindSampler(m_dest_tu, 0);
setTextureUnits(auxiliary.getRTT()[0],

View File

@@ -1108,11 +1108,11 @@ void renderMeshes1stPass()
}
} // renderMeshes1stPass
#if !defined(USE_GLES2)
// ----------------------------------------------------------------------------
template<typename T, typename...Args>
void renderInstancedMeshes1stPass(Args...args)
{
#if !defined(USE_GLES2)
std::vector<GLMesh *> &meshes = T::InstancedList::getInstance()->SolidPass;
T::InstancedFirstPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType, T::Instance));
@@ -1133,14 +1133,12 @@ void renderInstancedMeshes1stPass(Args...args)
T::InstancedFirstPassShader::getInstance()->setUniforms(args...);
glDrawElementsIndirect(GL_TRIANGLES, GL_UNSIGNED_SHORT, (const void*)((SolidPassCmd::getInstance()->Offset[T::MaterialType] + i) * sizeof(DrawElementsIndirectCommand)));
}
#endif
} // renderInstancedMeshes1stPass
// ----------------------------------------------------------------------------
template<typename T, typename...Args>
void multidraw1stPass(Args...args)
{
#if !defined(USE_GLES2)
T::InstancedFirstPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType, T::Instance));
if (SolidPassCmd::getInstance()->Size[T::MaterialType])
@@ -1151,8 +1149,8 @@ void multidraw1stPass(Args...args)
(int)SolidPassCmd::getInstance()->Size[T::MaterialType],
sizeof(DrawElementsIndirectCommand));
}
#endif
} // multidraw1stPass
#endif
static core::vector3df windDir;
@@ -1247,11 +1245,11 @@ void renderMeshes2ndPass( const std::vector<uint64_t> &Prefilled_Handle,
}
} // renderMeshes2ndPass
#if !defined(USE_GLES2)
// ----------------------------------------------------------------------------
template<typename T, typename...Args>
void renderInstancedMeshes2ndPass(const std::vector<GLuint> &Prefilled_tex, Args...args)
{
#if !defined(USE_GLES2)
std::vector<GLMesh *> &meshes = T::InstancedList::getInstance()->SolidPass;
T::InstancedSecondPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType,
@@ -1267,14 +1265,12 @@ void renderInstancedMeshes2ndPass(const std::vector<GLuint> &Prefilled_tex, Args
(const void*)((SolidPassCmd::getInstance()->Offset[T::MaterialType] + i)
* sizeof(DrawElementsIndirectCommand)));
}
#endif
} // renderInstancedMeshes2ndPass
// ----------------------------------------------------------------------------
template<typename T, typename...Args>
void multidraw2ndPass(const std::vector<uint64_t> &Handles, Args... args)
{
#if !defined(USE_GLES2)
T::InstancedSecondPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType,
T::Instance));
@@ -1291,8 +1287,8 @@ void multidraw2ndPass(const std::vector<uint64_t> &Handles, Args... args)
(int)SolidPassCmd::getInstance()->Size[T::MaterialType],
(int)sizeof(DrawElementsIndirectCommand));
}
#endif
} // multidraw2ndPass
#endif
// ----------------------------------------------------------------------------
void IrrDriver::renderSolidSecondPass()
@@ -1326,9 +1322,7 @@ void IrrDriver::renderSolidSecondPass()
if (!glIsTextureHandleResidentARB(DepthHandle))
glMakeTextureHandleResidentARB(DepthHandle);
}
#endif
#if !defined(USE_GLES2)
if (CVS->supportsIndirectInstancingRendering())
glBindBuffer(GL_DRAW_INDIRECT_BUFFER,
SolidPassCmd::getInstance()->drawindirectcmd);
@@ -1421,11 +1415,11 @@ void IrrDriver::renderSolidSecondPass()
}
} // renderSolidSecondPass
#if !defined(USE_GLES2)
// ----------------------------------------------------------------------------
template<typename T>
static void renderInstancedMeshNormals()
{
#if !defined(USE_GLES2)
std::vector<GLMesh *> &meshes = T::InstancedList::getInstance()->SolidPass;
NormalVisualizer::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType, T::Instance));
@@ -1436,14 +1430,12 @@ static void renderInstancedMeshNormals()
(const void*)((SolidPassCmd::getInstance()->Offset[T::MaterialType] + i)
* sizeof(DrawElementsIndirectCommand)));
}
#endif
} // renderInstancedMeshNormals
// ----------------------------------------------------------------------------
template<typename T>
static void renderMultiMeshNormals()
{
#if !defined(USE_GLES2)
NormalVisualizer::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType, T::Instance));
if (SolidPassCmd::getInstance()->Size[T::MaterialType])
@@ -1454,8 +1446,8 @@ static void renderMultiMeshNormals()
(int)SolidPassCmd::getInstance()->Size[T::MaterialType],
(int)sizeof(DrawElementsIndirectCommand));
}
#endif
} // renderMultiMeshNormals
#endif
// ----------------------------------------------------------------------------
void IrrDriver::renderNormalsVisualisation()
@@ -1655,6 +1647,7 @@ void IrrDriver::renderTransparent()
glDisable(GL_STENCIL_TEST);
} // renderTransparent
#if !defined(USE_GLES2)
// ----------------------------------------------------------------------------
template<typename T, typename...uniforms>
void drawShadow(const T *Shader, unsigned cascade, const GLMesh *mesh, uniforms... Args)
@@ -1720,7 +1713,6 @@ void renderShadow(unsigned cascade)
template<typename T, typename...Args>
void renderInstancedShadow(unsigned cascade, Args ...args)
{
#if !defined(USE_GLES2)
T::InstancedShadowPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType,
InstanceTypeShadow));
@@ -1737,14 +1729,12 @@ void renderInstancedShadow(unsigned cascade, Args ...args)
(const void*)((tmp)
* sizeof(DrawElementsIndirectCommand)));
} // for i
#endif
} // renderInstancedShadow
// ----------------------------------------------------------------------------
template<typename T, typename...Args>
static void multidrawShadow(unsigned i, Args ...args)
{
#if !defined(USE_GLES2)
T::InstancedShadowPassShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType,
InstanceTypeShadow));
@@ -1757,8 +1747,8 @@ static void multidrawShadow(unsigned i, Args ...args)
(int)ShadowPassCmd::getInstance()->Size[i][T::MaterialType],
sizeof(DrawElementsIndirectCommand));
}
#endif
} // multidrawShadow
#endif
// ----------------------------------------------------------------------------
void IrrDriver::renderShadows()
@@ -1843,7 +1833,7 @@ void IrrDriver::renderShadows()
} // renderShadows
#if !defined(USE_GLES2)
// ----------------------------------------------------------------------------
template<int...List>
struct rsm_custom_unroll_args;
@@ -1898,7 +1888,6 @@ void drawRSM(const core::matrix4 & rsm_matrix)
template<typename T, typename...Args>
void renderRSMShadow(Args ...args)
{
#if !defined(USE_GLES2)
T::InstancedRSMShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType, InstanceTypeRSM));
auto t = T::InstancedList::getInstance()->RSM;
@@ -1913,14 +1902,12 @@ void renderRSMShadow(Args ...args)
(const void*)((RSMPassCmd::getInstance()->Offset[T::MaterialType] + i)
* sizeof(DrawElementsIndirectCommand)));
}
#endif
} // renderRSMShadow
// ----------------------------------------------------------------------------
template<typename T, typename... Args>
void multidrawRSM(Args...args)
{
#if !defined(USE_GLES2)
T::InstancedRSMShader::getInstance()->use();
glBindVertexArray(VAOManager::getInstance()->getInstanceVAO(T::VertexType,
InstanceTypeRSM));
@@ -1933,12 +1920,13 @@ void multidrawRSM(Args...args)
(int)RSMPassCmd::getInstance()->Size[T::MaterialType],
sizeof(DrawElementsIndirectCommand));
}
#endif
} // multidrawRSM
#endif
// ----------------------------------------------------------------------------
void IrrDriver::renderRSM()
{
#if !defined(USE_GLES2)
if (getShadowMatrices()->isRSMMapAvail())
return;
ScopedGPUTimer Timer(getGPUTimer(Q_RSM));
@@ -1953,7 +1941,6 @@ void IrrDriver::renderRSM()
drawRSM<DetailMat, 3, 1>(rsm_matrix);
drawRSM<SplattingMat, 1>(rsm_matrix);
#if !defined(USE_GLES2)
if (CVS->supportsIndirectInstancingRendering())
glBindBuffer(GL_DRAW_INDIRECT_BUFFER,
RSMPassCmd::getInstance()->drawindirectcmd);
@@ -1974,7 +1961,7 @@ void IrrDriver::renderRSM()
renderRSMShadow<NormalMat>(rsm_matrix);
renderRSMShadow<DetailMat>(rsm_matrix);
}
#endif
getShadowMatrices()->setRSMMapAvail(true);
#endif
} // renderRSM

View File

@@ -220,6 +220,7 @@ public:
} // render
}; // ShadowedSunLightShaderESM
#if !defined(USE_GLES2)
// ============================================================================
class RadianceHintsConstructionShader
: public TextureShader<RadianceHintsConstructionShader, 3, core::matrix4,
@@ -228,7 +229,6 @@ class RadianceHintsConstructionShader
public:
RadianceHintsConstructionShader()
{
#if !defined(USE_GLES2)
if (CVS->isAMDVertexShaderLayerUsable())
{
loadProgram(OBJECT, GL_VERTEX_SHADER, "slicedscreenquad.vert",
@@ -245,7 +245,6 @@ public:
assignSamplerNames(0, "ctex", ST_BILINEAR_FILTERED,
1, "ntex", ST_BILINEAR_FILTERED,
2, "dtex", ST_BILINEAR_FILTERED);
#endif
} // RadianceHintsConstructionShader
}; // RadianceHintsConstructionShader
@@ -259,7 +258,6 @@ class NVWorkaroundRadianceHintsConstructionShader
public:
NVWorkaroundRadianceHintsConstructionShader()
{
#if !defined(USE_GLES2)
loadProgram(OBJECT,GL_VERTEX_SHADER,"slicedscreenquad_nvworkaround.vert",
GL_GEOMETRY_SHADER, "rhpassthrough.geom",
GL_FRAGMENT_SHADER, "rh.frag");
@@ -269,9 +267,9 @@ public:
assignSamplerNames(0, "ctex", ST_BILINEAR_FILTERED,
1, "ntex", ST_BILINEAR_FILTERED,
2, "dtex", ST_BILINEAR_FILTERED);
#endif
} // NVWorkaroundRadianceHintsConstructionShader
}; // NVWorkaroundRadianceHintsConstructionShader
#endif
// ============================================================================
class FogShader : public TextureShader<FogShader, 1, float, core::vector3df>
@@ -426,6 +424,7 @@ void IrrDriver::uploadLightingData()
void IrrDriver::renderLights(unsigned pointlightcount, bool hasShadow)
{
//RH
#if !defined(USE_GLES2)
if (CVS->isGlobalIlluminationEnabled() && hasShadow)
{
ScopedGPUTimer timer(irr_driver->getGPUTimer(Q_RH));
@@ -467,6 +466,7 @@ void IrrDriver::renderLights(unsigned pointlightcount, bool hasShadow)
glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, 32);
}
}
#endif
getShadowMatrices()->updateSunOrthoMatrices();
m_rtts->getFBO(FBO_COMBINED_DIFFUSE_SPECULAR).bind();
glClear(GL_COLOR_BUFFER_BIT);

View File

@@ -646,6 +646,8 @@ PROFILER_POP_CPU_MARKER();
if (!CVS->supportsIndirectInstancingRendering())
return;
#if !defined(USE_GLES2)
InstanceDataDualTex *InstanceBufferDualTex;
InstanceDataThreeTex *InstanceBufferThreeTex;
@@ -692,12 +694,10 @@ PROFILER_POP_CPU_MARKER();
size_t offset = 0, current_cmd = 0;
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glBindBuffer(GL_ARRAY_BUFFER, VAOManager::getInstance()->getInstanceBuffer(InstanceTypeDualTex));
InstanceBufferDualTex = (InstanceDataDualTex*)glMapBufferRange(GL_ARRAY_BUFFER, 0, 10000 * sizeof(InstanceDataDualTex), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, SolidPassCmd::getInstance()->drawindirectcmd);
CmdBuffer = (DrawElementsIndirectCommand*)glMapBufferRange(GL_DRAW_INDIRECT_BUFFER, 0, 10000 * sizeof(DrawElementsIndirectCommand), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
#endif
}
@@ -742,10 +742,8 @@ PROFILER_POP_CPU_MARKER();
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glUnmapBuffer(GL_ARRAY_BUFFER);
glUnmapBuffer(GL_DRAW_INDIRECT_BUFFER);
#endif
}
}
#pragma omp section
@@ -754,12 +752,10 @@ PROFILER_POP_CPU_MARKER();
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glBindBuffer(GL_ARRAY_BUFFER, VAOManager::getInstance()->getInstanceBuffer(InstanceTypeGlow));
GlowInstanceBuffer = (GlowInstanceData*)glMapBufferRange(GL_ARRAY_BUFFER, 0, 10000 * sizeof(InstanceDataDualTex), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, GlowPassCmd::getInstance()->drawindirectcmd);
GlowCmdBuffer = (DrawElementsIndirectCommand*)glMapBufferRange(GL_DRAW_INDIRECT_BUFFER, 0, 10000 * sizeof(DrawElementsIndirectCommand), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
#endif
}
// Glow
@@ -780,10 +776,8 @@ PROFILER_POP_CPU_MARKER();
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glUnmapBuffer(GL_ARRAY_BUFFER);
glUnmapBuffer(GL_DRAW_INDIRECT_BUFFER);
#endif
}
}
#pragma omp section
@@ -793,12 +787,10 @@ PROFILER_POP_CPU_MARKER();
size_t offset = 0, current_cmd = 0;
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glBindBuffer(GL_ARRAY_BUFFER, VAOManager::getInstance()->getInstanceBuffer(InstanceTypeShadow));
ShadowInstanceBuffer = (InstanceDataSingleTex*)glMapBufferRange(GL_ARRAY_BUFFER, 0, 10000 * sizeof(InstanceDataDualTex), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, ShadowPassCmd::getInstance()->drawindirectcmd);
ShadowCmdBuffer = (DrawElementsIndirectCommand*)glMapBufferRange(GL_DRAW_INDIRECT_BUFFER, 0, 10000 * sizeof(DrawElementsIndirectCommand), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
#endif
}
for (unsigned i = 0; i < 4; i++)
@@ -820,10 +812,8 @@ PROFILER_POP_CPU_MARKER();
}
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glUnmapBuffer(GL_ARRAY_BUFFER);
glUnmapBuffer(GL_DRAW_INDIRECT_BUFFER);
#endif
}
}
#pragma omp section
@@ -832,12 +822,10 @@ PROFILER_POP_CPU_MARKER();
size_t offset = 0, current_cmd = 0;
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glBindBuffer(GL_ARRAY_BUFFER, VAOManager::getInstance()->getInstanceBuffer(InstanceTypeRSM));
RSMInstanceBuffer = (InstanceDataSingleTex*)glMapBufferRange(GL_ARRAY_BUFFER, 0, 10000 * sizeof(InstanceDataDualTex), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
glBindBuffer(GL_DRAW_INDIRECT_BUFFER, RSMPassCmd::getInstance()->drawindirectcmd);
RSMCmdBuffer = (DrawElementsIndirectCommand*)glMapBufferRange(GL_DRAW_INDIRECT_BUFFER, 0, 10000 * sizeof(DrawElementsIndirectCommand), GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
#endif
}
// Default Material
@@ -863,10 +851,8 @@ PROFILER_POP_CPU_MARKER();
if (!CVS->supportsAsyncInstanceUpload())
{
#if !defined(USE_GLES2)
glUnmapBuffer(GL_ARRAY_BUFFER);
glUnmapBuffer(GL_DRAW_INDIRECT_BUFFER);
#endif
}
}
}
@@ -874,7 +860,6 @@ PROFILER_POP_CPU_MARKER();
poly_count[SOLID_NORMAL_AND_DEPTH_PASS] += SolidPoly;
poly_count[SHADOW_PASS] += ShadowPoly;
#if !defined(USE_GLES2)
if (CVS->supportsAsyncInstanceUpload())
glMemoryBarrier(GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT);
#endif

View File

@@ -105,16 +105,14 @@ void compressTexture(irr::video::ITexture *tex, bool srgb, bool premul_alpha)
}
}
#if !defined(USE_GLES2)
if (!CVS->isTextureCompressionEnabled())
{
#if !defined(USE_GLES2)
if (srgb)
internalFormat = (tex->hasAlpha()) ? GL_SRGB_ALPHA : GL_SRGB;
else
#endif
internalFormat = (tex->hasAlpha()) ? GL_RGBA : GL_RGB;
}
#if !defined(USE_GLES2)
else
{
if (srgb)
@@ -122,6 +120,8 @@ void compressTexture(irr::video::ITexture *tex, bool srgb, bool premul_alpha)
else
internalFormat = (tex->hasAlpha()) ? GL_COMPRESSED_RGBA_S3TC_DXT5_EXT : GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
}
#else
internalFormat = (tex->hasAlpha()) ? GL_RGBA : GL_RGB;
#endif
glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, w, h, 0, Format, GL_UNSIGNED_BYTE, (GLvoid *)data);
glGenerateMipmap(GL_TEXTURE_2D);