More #ifdef's simplifications
This commit is contained in:
@@ -201,9 +201,7 @@ void CentralVideoSettings::init()
|
||||
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, ¶m);
|
||||
m_need_srgb_visual_workaround = (param != GL_SRGB);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_GLES2)
|
||||
#else
|
||||
if (m_glsl == true)
|
||||
{
|
||||
hasArraysOfArrays = true;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user