mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-03-13 12:11:57 +00:00
Render updates from GZDoom
This commit is contained in:
parent
defffd7a60
commit
0358cb672a
5 changed files with 28 additions and 30 deletions
|
@ -450,13 +450,14 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer ()
|
||||||
device = new VulkanDevice();
|
device = new VulkanDevice();
|
||||||
fb = new VulkanFrameBuffer(nullptr, vid_fullscreen, device);
|
fb = new VulkanFrameBuffer(nullptr, vid_fullscreen, device);
|
||||||
}
|
}
|
||||||
catch (CVulkanError const&)
|
catch (CVulkanError const &error)
|
||||||
{
|
{
|
||||||
if (Priv::window != nullptr)
|
if (Priv::window != nullptr)
|
||||||
{
|
{
|
||||||
Priv::DestroyWindow();
|
Priv::DestroyWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Printf(TEXTCOLOR_RED "Initialization of Vulkan failed: %s\n", error.what());
|
||||||
Priv::vulkanEnabled = false;
|
Priv::vulkanEnabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -470,7 +471,7 @@ DFrameBuffer *SDLVideo::CreateFrameBuffer ()
|
||||||
#endif
|
#endif
|
||||||
if (fb == nullptr)
|
if (fb == nullptr)
|
||||||
{
|
{
|
||||||
if( Args->CheckParm ("-gles2_renderer") )
|
if( (Args->CheckParm ("-gles2_renderer")) || (vid_preferbackend == 3) )
|
||||||
fb = new OpenGLESRenderer::OpenGLFrameBuffer(0, vid_fullscreen);
|
fb = new OpenGLESRenderer::OpenGLFrameBuffer(0, vid_fullscreen);
|
||||||
else
|
else
|
||||||
fb = new OpenGLRenderer::OpenGLFrameBuffer(0, vid_fullscreen);
|
fb = new OpenGLRenderer::OpenGLFrameBuffer(0, vid_fullscreen);
|
||||||
|
|
|
@ -63,7 +63,6 @@ EXTERN_CVAR (Bool, vid_vsync)
|
||||||
EXTERN_CVAR(Bool, r_drawvoxels)
|
EXTERN_CVAR(Bool, r_drawvoxels)
|
||||||
EXTERN_CVAR(Int, gl_tonemap)
|
EXTERN_CVAR(Int, gl_tonemap)
|
||||||
EXTERN_CVAR(Bool, cl_capfps)
|
EXTERN_CVAR(Bool, cl_capfps)
|
||||||
EXTERN_CVAR(Bool, gl_customshader)
|
|
||||||
EXTERN_CVAR(Int, gl_pipeline_depth);
|
EXTERN_CVAR(Int, gl_pipeline_depth);
|
||||||
|
|
||||||
EXTERN_CVAR(Bool, gl_sort_textures);
|
EXTERN_CVAR(Bool, gl_sort_textures);
|
||||||
|
|
|
@ -128,6 +128,9 @@ bool FGLRenderState::ApplyShader()
|
||||||
ShaderFlavourData flavour;
|
ShaderFlavourData flavour;
|
||||||
|
|
||||||
flavour.textureMode = (mTextureMode == TM_NORMAL && mTempTM == TM_OPAQUE ? TM_OPAQUE : mTextureMode);
|
flavour.textureMode = (mTextureMode == TM_NORMAL && mTempTM == TM_OPAQUE ? TM_OPAQUE : mTextureMode);
|
||||||
|
|
||||||
|
if (flavour.textureMode == -1)
|
||||||
|
flavour.textureMode = 0;
|
||||||
|
|
||||||
flavour.texFlags = mTextureModeFlags; if (!mBrightmapEnabled) flavour.texFlags &= ~(TEXF_Brightmap | TEXF_Glowmap);
|
flavour.texFlags = mTextureModeFlags; if (!mBrightmapEnabled) flavour.texFlags &= ~(TEXF_Brightmap | TEXF_Glowmap);
|
||||||
flavour.texFlags >>= 16; //Move flags to start of word
|
flavour.texFlags >>= 16; //Move flags to start of word
|
||||||
|
|
|
@ -394,25 +394,9 @@ bool FShader::Load(const char * name, const char * vert_prog_lump_, const char *
|
||||||
|
|
||||||
bool lightbuffertype = screen->mLights->GetBufferType();
|
bool lightbuffertype = screen->mLights->GetBufferType();
|
||||||
unsigned int lightbuffersize = screen->mLights->GetBlockSize();
|
unsigned int lightbuffersize = screen->mLights->GetBlockSize();
|
||||||
if (!lightbuffertype)
|
|
||||||
{
|
|
||||||
vp_comb.Format("#version 100\n#define NUM_UBO_LIGHTS %d\n#define NO_CLIPDISTANCE_SUPPORT\n", lightbuffersize);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// This differentiation is for Intel which do not seem to expose the full extension, even if marked as required.
|
|
||||||
if (gles.glslversion < 4.3f)
|
|
||||||
vp_comb = "#version 400 core\n#extension GL_ARB_shader_storage_buffer_object : require\n#define SHADER_STORAGE_LIGHTS\n";
|
|
||||||
else
|
|
||||||
vp_comb = "#version 430 core\n#define SHADER_STORAGE_LIGHTS\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gl.flags & RFL_SHADER_STORAGE_BUFFER)
|
vp_comb.Format("#version 100\n#define NUM_UBO_LIGHTS %d\n#define NO_CLIPDISTANCE_SUPPORT\n", lightbuffersize);
|
||||||
{
|
|
||||||
vp_comb << "#define SUPPORTS_SHADOWMAPS\n";
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
FString fp_comb = vp_comb;
|
FString fp_comb = vp_comb;
|
||||||
vp_comb << defines << i_data.GetChars();
|
vp_comb << defines << i_data.GetChars();
|
||||||
fp_comb << "$placeholder$\n" << defines << i_data.GetChars();
|
fp_comb << "$placeholder$\n" << defines << i_data.GetChars();
|
||||||
|
@ -690,10 +674,9 @@ bool FShader::Bind(ShaderFlavourData& flavour)
|
||||||
{
|
{
|
||||||
uint32_t tag = CreateShaderTag(flavour);
|
uint32_t tag = CreateShaderTag(flavour);
|
||||||
|
|
||||||
|
auto pos = variants.find(tag);
|
||||||
|
|
||||||
cur = variants[tag];
|
if (pos == variants.end())
|
||||||
|
|
||||||
if (!cur)
|
|
||||||
{
|
{
|
||||||
FString variantConfig = "\n";
|
FString variantConfig = "\n";
|
||||||
|
|
||||||
|
@ -731,7 +714,14 @@ bool FShader::Bind(ShaderFlavourData& flavour)
|
||||||
|
|
||||||
Load(mName.GetChars(), mVertProg, mFragProg, mFragProg2, mLightProg, mDefinesBase + variantConfig);
|
Load(mName.GetChars(), mVertProg, mFragProg, mFragProg2, mLightProg, mDefinesBase + variantConfig);
|
||||||
|
|
||||||
variants[tag] = cur;
|
if (variants.insert(std::make_pair(tag, cur)).second == false)
|
||||||
|
{
|
||||||
|
Printf("ERROR INSERTING");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cur = pos->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLRenderer->mShaderManager->SetActiveShader(this->cur);
|
GLRenderer->mShaderManager->SetActiveShader(this->cur);
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
CVAR(Bool, gles_use_mapped_buffer, false, 0);
|
CVAR(Bool, gles_use_mapped_buffer, false, 0);
|
||||||
CVAR(Bool, gles_force_glsl_v100, false, 0);
|
CVAR(Bool, gles_force_glsl_v100, false, 0);
|
||||||
CVAR(Int, gles_max_lights_per_surface, 32, 0);
|
CVAR(Int, gles_max_lights_per_surface, 32, 0);
|
||||||
|
EXTERN_CVAR(Bool, gl_customshader);
|
||||||
|
|
||||||
|
|
||||||
#if USE_GLES2
|
#if USE_GLES2
|
||||||
|
@ -164,18 +165,22 @@ namespace OpenGLESRenderer
|
||||||
gles.modelstring = (char*)glGetString(GL_RENDERER);
|
gles.modelstring = (char*)glGetString(GL_RENDERER);
|
||||||
gles.vendorstring = (char*)glGetString(GL_VENDOR);
|
gles.vendorstring = (char*)glGetString(GL_VENDOR);
|
||||||
|
|
||||||
#if USE_GLES2
|
gl_customshader = false;
|
||||||
|
|
||||||
|
GLint maxTextureSize[1];
|
||||||
|
glGetIntegerv(GL_MAX_TEXTURE_SIZE, maxTextureSize);
|
||||||
|
|
||||||
|
gles.max_texturesize = maxTextureSize[0];
|
||||||
|
|
||||||
|
Printf("GL_MAX_TEXTURE_SIZE: %d\n", gles.max_texturesize);
|
||||||
|
|
||||||
|
#if USE_GLES2
|
||||||
gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil");
|
gles.depthStencilAvailable = CheckExtension("GL_OES_packed_depth_stencil");
|
||||||
gles.npotAvailable = CheckExtension("GL_OES_texture_npot");
|
gles.npotAvailable = CheckExtension("GL_OES_texture_npot");
|
||||||
|
|
||||||
gles.max_texturesize = 1024 * 2;
|
|
||||||
#else
|
#else
|
||||||
gles.depthStencilAvailable = true;
|
gles.depthStencilAvailable = true;
|
||||||
gles.npotAvailable = true;
|
gles.npotAvailable = true;
|
||||||
gles.useMappedBuffers = true;
|
gles.useMappedBuffers = true;
|
||||||
|
|
||||||
gles.max_texturesize = 1024 * 2;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
gles.numlightvectors = (gles.maxlights * LIGHT_VEC4_NUM);
|
||||||
|
|
Loading…
Reference in a new issue