diff --git a/Build/svencoop/renderer/shader/studio_shader.fsh b/Build/svencoop/renderer/shader/studio_shader.fsh index 80938c7d..6702497e 100644 --- a/Build/svencoop/renderer/shader/studio_shader.fsh +++ b/Build/svencoop/renderer/shader/studio_shader.fsh @@ -508,12 +508,12 @@ vec3 R_StudioCelShade(vec3 v_color, vec3 normalWS, vec3 lightdirWS, float specul #endif -#endif +#endif //defined(STUDIO_NF_CELSHADE_HAIR) return v_color.xyz * litOrShadowColor + rimLightColor + rimDarkColor + specularColor; -} +} //R_StudioCelShade -#endif +#endif //defined(STUDIO_NF_CELSHADE) #if defined(STUDIO_NF_CELSHADE_FACE) && defined(STUDIO_DEBUG_ENABLED) diff --git a/Plugins/Renderer/exportfuncs.cpp b/Plugins/Renderer/exportfuncs.cpp index 9c21126e..7be44349 100644 --- a/Plugins/Renderer/exportfuncs.cpp +++ b/Plugins/Renderer/exportfuncs.cpp @@ -93,10 +93,12 @@ void V_CalcRefdef(struct ref_params_s *pparams) memcpy(&r_params, pparams, sizeof(struct ref_params_s)); } +#if 0 void HUD_DrawTransparentTriangles(void) { - //gExportfuncs.HUD_DrawTransparentTriangles(); + gExportfuncs.HUD_DrawTransparentTriangles(); } +#endif int HUD_Redraw(float time, int intermission) { diff --git a/Plugins/Renderer/gl_draw.cpp b/Plugins/Renderer/gl_draw.cpp index 9bf2b6f1..1fe5b8e0 100644 --- a/Plugins/Renderer/gl_draw.cpp +++ b/Plugins/Renderer/gl_draw.cpp @@ -414,6 +414,8 @@ void GL_UploadSubDataToVBODynamicDraw(GLuint VBO, size_t offset, size_t size, co void GL_UploadDataToEBOStaticDraw(GLuint EBO, size_t size, const void* data) { + //TODO: what if size == 0 ? + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO); if (glBufferStorage) { diff --git a/Plugins/Renderer/gl_rmain.cpp b/Plugins/Renderer/gl_rmain.cpp index 3285bd0c..2022296e 100644 --- a/Plugins/Renderer/gl_rmain.cpp +++ b/Plugins/Renderer/gl_rmain.cpp @@ -903,8 +903,8 @@ void R_DrawTransEntities(int onlyClientDraw) glColorMask(1, 1, 1, 1); - GL_BlitFrameBufferToFrameBufferColorOnly(&s_BackBufferFBO, &s_BackBufferFBO2); - R_BlendOITBuffer(&s_BackBufferFBO2, &s_BackBufferFBO); + GL_BlitFrameBufferToFrameBufferColorOnly(GL_GetCurrentSceneFBO(), &s_BackBufferFBO2); + R_BlendOITBuffer(&s_BackBufferFBO2, GL_GetCurrentSceneFBO()); glMemoryBarrier(GL_SHADER_STORAGE_BARRIER_BIT); } @@ -1375,6 +1375,7 @@ void GL_FreeFrameBuffers(void) GL_FreeFBO(&s_FinalBufferFBO); GL_FreeFBO(&s_BackBufferFBO); GL_FreeFBO(&s_BackBufferFBO2); + GL_FreeFBO(&s_BackBufferFBO3); GL_FreeFBO(&s_GBufferFBO); for (int i = 0; i < DOWNSAMPLE_BUFFERS; ++i) GL_FreeFBO(&s_DownSampleFBO[i]); @@ -1404,6 +1405,7 @@ void GL_GenerateFrameBuffers(void) GL_GenFrameBuffer(&s_FinalBufferFBO); GL_FrameBufferColorTexture(&s_FinalBufferFBO, GL_RGBA8); GL_FrameBufferDepthTexture(&s_FinalBufferFBO, GL_DEPTH24_STENCIL8); + glDrawBuffer(GL_COLOR_ATTACHMENT0); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { @@ -2081,6 +2083,7 @@ void R_RenderView_SvEngine(int viewIdx) else { GL_BindFrameBuffer(&s_FinalBufferFBO); + GL_SetCurrentSceneFBO(NULL); } (*c_alias_polys) += r_studio_polys; @@ -2835,6 +2838,22 @@ void R_AdjustScopeFOVForViewModel(float *fov) } } +void R_UseLegacyOpenGLMatrixForViewModel() +{ + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(r_viewmodel_projection_matrix); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(r_world_matrix); +} + +void R_UseLegacyOpenGLMatrixForWorld() +{ + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(r_projection_matrix); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(r_world_matrix); +} + void R_UseProjMatrixForViewModel(void) { scene_ubo_t SceneUBO; @@ -3436,11 +3455,14 @@ void R_EndRenderOpaque(void) if (R_IsGammaBlendEnabled()) { - R_GammaCorrection(GL_GetCurrentSceneFBO(), &s_BackBufferFBO3); GL_BlitFrameBufferToFrameBufferDepthStencil(GL_GetCurrentSceneFBO(), &s_BackBufferFBO3); + R_GammaCorrection(GL_GetCurrentSceneFBO(), &s_BackBufferFBO3); GL_SetCurrentSceneFBO(&s_BackBufferFBO3); r_draw_gammablend = true; } + + //For backward compatibility, some Mods may use Legacy OpenGL 1.x Matrix + R_UseLegacyOpenGLMatrixForWorld(); } void ClientDLL_DrawNormalTriangles(void) diff --git a/Plugins/Renderer/gl_shader.h b/Plugins/Renderer/gl_shader.h index cc2522c1..fed0df27 100644 --- a/Plugins/Renderer/gl_shader.h +++ b/Plugins/Renderer/gl_shader.h @@ -52,5 +52,5 @@ void R_SaveProgramStatesCaches(const char *filename, const std::vector