1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-07 03:13:49 +00:00

Make use of Uniform Block optional.

This commit is contained in:
Sergey Lipskiy 2016-06-30 17:12:06 +06:00
parent 99af3839e3
commit 0aaadb1507
10 changed files with 71 additions and 20 deletions

View File

@ -1,8 +1,9 @@
cmake project files located inside src folder. To build the project with cmake, run
cmake [-DCMAKE_BUILD_TYPE=Debug] [-DOPT=On] [-DNOHQ=On] -DMUPENPLUSAPI=On ../../src/
cmake [-DCMAKE_BUILD_TYPE=Debug] [-DOPT=On] [-DNOHQ=On] [-DUSE_UNIFORMBLOCK=On] -DMUPENPLUSAPI=On ../../src/
-DCMAKE_BUILD_TYPE=Debug - optional parameter, if you want debug build. Default buid type is Release
-DOPT=On - optional parameter. set it if you want to enable additional optimizations (can cause additional bugs).
-DNOHQ=On - build without realtime texture enhancer library (GLideNHQ)
-DUSE_UNIFORMBLOCK=On - Use uniform blocks in shaders. May help to improve performance. Not supported by GLES2 hardware.
-DMUPENPLUSAPI=On - currently cmake build works only for mupen64plus version of the plugin.

View File

@ -100,7 +100,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>UNICODE;TXFILTER_LIB;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>UNICODE;GL_USE_UNIFORMBLOCK;TXFILTER_LIB;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@ -127,7 +127,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_mupenplus|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>UNICODE;TXFILTER_LIB;MUPENPLUSAPI;WIN32;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>UNICODE;GL_USE_UNIFORMBLOCK;TXFILTER_LIB;MUPENPLUSAPI;WIN32;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>false</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@ -158,7 +158,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<PreprocessorDefinitions>NDEBUG;UNICODE;TXFILTER_LIB;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;UNICODE;GL_USE_UNIFORMBLOCK;TXFILTER_LIB;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@ -189,7 +189,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<PreprocessorDefinitions>NDEBUG;UNICODE;TXFILTER_LIB;MUPENPLUSAPI;WIN32;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>NDEBUG;UNICODE;GL_USE_UNIFORMBLOCK;TXFILTER_LIB;MUPENPLUSAPI;WIN32;WIN32_ASM;OS_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
@ -237,6 +237,7 @@
<ClCompile Include="..\..\src\gDP.cpp" />
<ClCompile Include="..\..\src\GLideN64.cpp" />
<ClCompile Include="..\..\src\glState.cpp" />
<ClCompile Include="..\..\src\GLUniforms\UniformBlock.cpp" />
<ClCompile Include="..\..\src\gSP.cpp" />
<ClCompile Include="..\..\src\Keys.cpp" />
<ClCompile Include="..\..\src\MupenPlusPluginAPI.cpp">
@ -261,7 +262,6 @@
</ClCompile>
<ClCompile Include="..\..\src\N64.cpp" />
<ClCompile Include="..\..\src\OGL3X\GLSLCombiner_ogl3x.cpp" />
<ClCompile Include="..\..\src\OGL3X\UniformBlock.cpp" />
<ClCompile Include="..\..\src\OpenGL.cpp" />
<ClCompile Include="..\..\src\PostProcessor.cpp" />
<ClCompile Include="..\..\src\RDP.CPP" />
@ -336,6 +336,7 @@
<ClInclude Include="..\..\src\GLideN64.h" />
<ClInclude Include="..\..\src\GLideNHQ\Ext_TxFilter.h" />
<ClInclude Include="..\..\src\GLSLCombiner.h" />
<ClInclude Include="..\..\src\GLUniforms\UniformBlock.h" />
<ClInclude Include="..\..\src\gSP.h" />
<ClInclude Include="..\..\src\Keys.h" />
<ClInclude Include="..\..\src\Log.h" />
@ -345,7 +346,6 @@
</ClInclude>
<ClInclude Include="..\..\src\N64.h" />
<ClInclude Include="..\..\src\OGL3X\Shaders_ogl3x.h" />
<ClInclude Include="..\..\src\OGL3X\UniformBlock.h" />
<ClInclude Include="..\..\src\OpenGL.h" />
<ClInclude Include="..\..\src\PluginAPI.h" />
<ClInclude Include="..\..\src\PostProcessor.h" />

View File

@ -48,6 +48,12 @@
<Filter Include="Source Files\DepthBufferRender">
<UniqueIdentifier>{ac6b6e3c-c470-4a66-ad6c-d4ad388ec793}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\GLUniforms">
<UniqueIdentifier>{b4b4d718-d4cf-4851-bd8f-fe0646df3d76}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\GLUniforms">
<UniqueIdentifier>{6207c101-59f4-44f2-9022-0b5d14645d92}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\Combiner.cpp">
@ -194,9 +200,6 @@
<ClCompile Include="..\..\src\Keys.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\OGL3X\UniformBlock.cpp">
<Filter>Source Files\OGL3X</Filter>
</ClCompile>
<ClCompile Include="..\..\src\ShaderUtils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@ -236,6 +239,9 @@
<ClCompile Include="..\..\src\FBOTextureFormats.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\GLUniforms\UniformBlock.cpp">
<Filter>Source Files\GLUniforms</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\3DMath.h">
@ -376,9 +382,6 @@
<ClInclude Include="..\..\src\UniformCollection.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\OGL3X\UniformBlock.h">
<Filter>OGL3X</Filter>
</ClInclude>
<ClInclude Include="..\..\src\ShaderUtils.h">
<Filter>Header Files</Filter>
</ClInclude>
@ -424,5 +427,8 @@
<ClInclude Include="..\..\src\FBOTextureFormats.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\GLUniforms\UniformBlock.h">
<Filter>Header Files\GLUniforms</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -196,13 +196,25 @@ if( CMAKE_BUILD_TYPE STREQUAL "Debug")
# )
endif( CMAKE_BUILD_TYPE STREQUAL "Debug")
if (USE_UNIFORMBLOCK)
add_definitions(
-DGL_USE_UNIFORMBLOCK
)
list(APPEND GLideN64_SOURCES
GLUniforms/UniformBlock.cpp
)
else (USE_UNIFORMBLOCK)
list(APPEND GLideN64_SOURCES
GLUniforms/UniformSet.cpp
)
endif (USE_UNIFORMBLOCK)
if(GLES2)
add_definitions(
-DGLES2
)
list(APPEND GLideN64_SOURCES
GLES2/GLSLCombiner_gles2.cpp
GLES2/UniformSet.cpp
BufferCopy/ColorBufferToRDRAMStub.cpp
)
SET(OPENGL_LIBRARIES -lGLESv2 -lEGL)
@ -216,7 +228,6 @@ else(GLES2)
endif(NOT OPENGL_FOUND)
list(APPEND GLideN64_SOURCES
OGL3X/GLSLCombiner_ogl3x.cpp
OGL3X/UniformBlock.cpp
BufferCopy/ColorBufferToRDRAM_GL.cpp
)
endif(GLES2)

View File

@ -25,6 +25,7 @@ MAIN_SHADER_VERSION
"uniform mediump vec2 uFogScale; \n"
"uniform mediump vec2 uScreenCoordsScale; \n"
" \n"
#ifdef GL_USE_UNIFORMBLOCK
"layout (std140) uniform TextureBlock { \n"
" mediump vec2 uTexScale; \n"
" mediump vec2 uTexOffset[2]; \n"
@ -33,6 +34,14 @@ MAIN_SHADER_VERSION
" mediump vec2 uCacheShiftScale[2]; \n"
" lowp ivec2 uCacheFrameBuffer; \n"
"}; \n"
#else
"uniform mediump vec2 uTexScale; \n"
"uniform mediump vec2 uTexOffset[2]; \n"
"uniform mediump vec2 uCacheScale[2]; \n"
"uniform mediump vec2 uCacheOffset[2]; \n"
"uniform mediump vec2 uCacheShiftScale[2]; \n"
"uniform lowp ivec2 uCacheFrameBuffer; \n"
#endif // GL_USE_UNIFORMBLOCK
"out lowp vec4 vShadeColor; \n"
"out mediump vec2 vTexCoord0; \n"
"out mediump vec2 vTexCoord1; \n"
@ -143,6 +152,7 @@ MAIN_SHADER_VERSION
"uniform sampler2D uTex0; \n"
"uniform sampler2D uTex1; \n"
"uniform sampler2D uDepthTex; \n"
#ifdef GL_USE_UNIFORMBLOCK
"layout (std140) uniform ColorsBlock {\n"
" lowp vec4 uFogColor; \n"
" lowp vec4 uCenterColor; \n"
@ -154,6 +164,17 @@ MAIN_SHADER_VERSION
" lowp float uK4; \n"
" lowp float uK5; \n"
"}; \n"
#else
"uniform lowp vec4 uFogColor; \n"
"uniform lowp vec4 uCenterColor;\n"
"uniform lowp vec4 uScaleColor; \n"
"uniform lowp vec4 uBlendColor; \n"
"uniform lowp vec4 uEnvColor; \n"
"uniform lowp vec4 uPrimColor; \n"
"uniform lowp float uPrimLod; \n"
"uniform lowp float uK4; \n"
"uniform lowp float uK5; \n"
#endif // GL_USE_UNIFORMBLOCK
#ifdef GLESX
"uniform mediump vec2 uScreenScale; \n"
#endif
@ -192,6 +213,7 @@ static const char* fragment_shader_header_common_variables_ms_tex1 =
static const char* fragment_shader_header_common_variables_notex =
MAIN_SHADER_VERSION
"uniform sampler2D uDepthTex; \n"
#ifdef GL_USE_UNIFORMBLOCK
"layout (std140) uniform ColorsBlock {\n"
" lowp vec4 uFogColor; \n"
" lowp vec4 uCenterColor; \n"
@ -203,6 +225,17 @@ MAIN_SHADER_VERSION
" lowp float uK4; \n"
" lowp float uK5; \n"
"}; \n"
#else
"uniform lowp vec4 uFogColor; \n"
"uniform lowp vec4 uCenterColor;\n"
"uniform lowp vec4 uScaleColor; \n"
"uniform lowp vec4 uBlendColor; \n"
"uniform lowp vec4 uEnvColor; \n"
"uniform lowp vec4 uPrimColor; \n"
"uniform lowp float uPrimLod; \n"
"uniform lowp float uK4; \n"
"uniform lowp float uK5; \n"
#endif // GL_USE_UNIFORMBLOCK
#ifdef GLESX
"uniform mediump vec2 uScreenScale; \n"
#endif
@ -253,10 +286,15 @@ static const char* fragment_shader_header_alpha_noise_toonify =
static const char* fragment_shader_calc_light =
AUXILIARY_SHADER_VERSION
#ifdef GL_USE_UNIFORMBLOCK
"layout (std140) uniform LightBlock { \n"
" mediump vec3 uLightDirection[8]; \n"
" lowp vec3 uLightColor[8]; \n"
"}; \n"
#else
"uniform mediump vec3 uLightDirection[8]; \n"
"uniform lowp vec3 uLightColor[8]; \n"
#endif // GL_USE_UNIFORMBLOCK
"void calc_light(in lowp float fLights, in lowp vec3 input_color, out lowp vec3 output_color) {\n"
" output_color = input_color; \n"
" lowp int nLights = int(floor(fLights + 0.5)); \n"

View File

@ -26,20 +26,17 @@ typedef char GLchar;
#elif defined(GLES3)
#include <GLES3/gl3.h>
#define GLESX
#define GL_UNIFORMBLOCK_SUPPORT
#elif defined(GLES3_1)
#include <GLES3/gl31.h>
#define GLESX
#define GL_IMAGE_TEXTURES_SUPPORT
#define GL_MULTISAMPLING_SUPPORT
#define GL_UNIFORMBLOCK_SUPPORT
#elif defined(EGL)
#include <GL/glcorearb.h>
#include "common/GLFunctions.h"
#include <GL/glext.h>
#define GL_IMAGE_TEXTURES_SUPPORT
#define GL_MULTISAMPLING_SUPPORT
#define GL_UNIFORMBLOCK_SUPPORT
#else
#if defined(OS_MAC_OS_X)
#define GL_GLEXT_PROTOTYPES
@ -52,14 +49,12 @@ typedef char GLchar;
#include <GL/glext.h>
#define GL_IMAGE_TEXTURES_SUPPORT
#define GL_MULTISAMPLING_SUPPORT
#define GL_UNIFORMBLOCK_SUPPORT
#elif defined(OS_WINDOWS)
#include <GL/gl.h>
#include "glext.h"
#include "common/GLFunctions.h"
#define GL_IMAGE_TEXTURES_SUPPORT
#define GL_MULTISAMPLING_SUPPORT
#define GL_UNIFORMBLOCK_SUPPORT
#endif // OS_MAC_OS_X
#endif // GLES2