[iortcw] 49/89: All: Rend2: Fix black planar projection shadows (cg_shadows 3)
Simon McVittie
smcv at debian.org
Fri Sep 8 10:44:25 UTC 2017
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to tag 1.51b
in repository iortcw.
commit 29c2ecc07a450ae1331b4c493cdd93c144c168c9
Author: MAN-AT-ARMS <M4N4T4RMS at gmail.com>
Date: Wed Jul 19 15:04:13 2017 -0400
All: Rend2: Fix black planar projection shadows (cg_shadows 3)
---
MP/code/rend2/tr_mesh.c | 29 +++++++++++++++++++++--------
SP/code/rend2/tr_mesh.c | 28 +++++++++++++++++++++++++---
2 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/MP/code/rend2/tr_mesh.c b/MP/code/rend2/tr_mesh.c
index f61968c..695491f 100644
--- a/MP/code/rend2/tr_mesh.c
+++ b/MP/code/rend2/tr_mesh.c
@@ -415,23 +415,36 @@ void R_AddMD3Surfaces( trRefEntity_t *ent ) {
shader = tr.shaders[ surface->shaderIndexes[ ent->e.skinNum % surface->numShaderIndexes ] ];
}
+ // we will add shadows even if the main object isn't visible in the view
+
+ // stencil shadows can't do personal models unless I polyhedron clip
+ if ( !personalModel
+ && r_shadows->integer == 2
+ && fogNum == 0
+ && !(ent->e.renderfx & ( RF_NOSHADOW | RF_DEPTHHACK ) )
+ && shader->sort == SS_OPAQUE ) {
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.shadowShader, 0, qfalse, qfalse, 0 );
+ }
+
+ // projection shadows work fine with personal models
+ if ( r_shadows->integer == 3
+ && fogNum == 0
+ && (ent->e.renderfx & RF_SHADOW_PLANE )
+ && shader->sort == SS_OPAQUE ) {
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.projectionShadowShader, 0, qfalse, qfalse, 0 );
+ }
// for testing polygon shadows (on /all/ models)
if ( r_shadows->integer == 4 ) {
- R_AddDrawSurf( (void *)surface, tr.projectionShadowShader, 0, qfalse, qfalse, 0 );
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.projectionShadowShader, 0, qfalse, qfalse, 0 );
}
-
// don't add third_person objects if not viewing through a portal
- if(!personalModel)
- {
- srfVaoMdvMesh_t *vaoSurface = &model->vaoSurfaces[i];
-
- R_AddDrawSurf((void *)vaoSurface, shader, fogNum, qfalse, qfalse, cubemapIndex );
+ if ( !personalModel ) {
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], shader, fogNum, qfalse, qfalse, cubemapIndex );
}
surface++;
}
-
}
diff --git a/SP/code/rend2/tr_mesh.c b/SP/code/rend2/tr_mesh.c
index 20b66f8..e24543a 100644
--- a/SP/code/rend2/tr_mesh.c
+++ b/SP/code/rend2/tr_mesh.c
@@ -430,16 +430,38 @@ void R_AddMD3Surfaces( trRefEntity_t *ent ) {
shader = tr.shaders[ surface->shaderIndexes[ ent->e.skinNum % surface->numShaderIndexes ] ];
}
+ // we will add shadows even if the main object isn't visible in the view
+
+ // stencil shadows can't do personal models unless I polyhedron clip
+ if ( !personalModel
+ && r_shadows->integer == 2
+ && fogNum == 0
+ && !(ent->e.renderfx & ( RF_NOSHADOW | RF_DEPTHHACK ) )
+ && shader->sort == SS_OPAQUE ) {
+// GR - tessellate according to model capabilities
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.shadowShader, 0, qfalse, qfalse, 0, tr.currentModel->ATI_tess );
+ }
+
+ // projection shadows work fine with personal models
+ if ( r_shadows->integer == 3
+ && fogNum == 0
+ && (ent->e.renderfx & RF_SHADOW_PLANE )
+ && shader->sort == SS_OPAQUE ) {
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.projectionShadowShader, 0, qfalse, qfalse, 0, tr.currentModel->ATI_tess );
+ }
+
+ // for testing polygon shadows (on /all/ models)
+ if ( r_shadows->integer == 4 ) {
+ R_AddDrawSurf( (void *)&model->vaoSurfaces[i], tr.projectionShadowShader, 0, qfalse, qfalse, 0, tr.currentModel->ATI_tess );
+ }
// don't add third_person objects if not viewing through a portal
if ( !personalModel ) {
// GR - tessellate according to model capabilities
- srfVaoMdvMesh_t *vaoSurface = &model->vaoSurfaces[i];
- R_AddDrawSurf( (void *)vaoSurface, shader, fogNum, qfalse, qfalse, cubemapIndex, tr.currentModel->ATI_tess );
+ R_AddDrawSurf((void *)&model->vaoSurfaces[i], shader, fogNum, qfalse, qfalse, cubemapIndex, tr.currentModel->ATI_tess );
}
surface++;
}
-
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git
More information about the Pkg-games-commits
mailing list