From 655d74532d9ff3a81a7c29518e6b1a11646ad961 Mon Sep 17 00:00:00 2001 From: Jay Dolan Date: Mon, 28 Dec 2020 16:02:05 -0500 Subject: [PATCH] Add the area portal filter for idTech2 games. These games had area portals. Quetoo now uses this contents for hardware occlusion queries as well -- so the filter is still useful there. --- radiant/filters.cpp | 9 +++++++++ radiant/qfiles.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/radiant/filters.cpp b/radiant/filters.cpp index 67c69767..ce329f82 100644 --- a/radiant/filters.cpp +++ b/radiant/filters.cpp @@ -146,6 +146,7 @@ bfilter_t *FilterAddBase( bfilter_t *pFilter ){ pFilter = FilterAddImpl( pFilter,8,0,NULL,EXCLUDE_MIST,true ); pFilter = FilterAddImpl( pFilter,8,0,NULL,EXCLUDE_HINTSSKIPS,true ); pFilter = FilterAddImpl( pFilter,8,0,NULL,EXCLUDE_TRANSLUCENT,true ); + pFilter = FilterAddImpl( pFilter,8,0,NULL,EXCLUDE_AREAPORTALS,true ); pFilter = FilterAddImpl( pFilter,8,0,NULL,EXCLUDE_SKY,true ); pFilter = FilterAddImpl( pFilter,3,0,"trigger",EXCLUDE_TRIGGERS,true ); pFilter = FilterAddImpl( pFilter,4,ECLASS_LIGHT,NULL,EXCLUDE_LIGHTS,true ); @@ -308,6 +309,14 @@ bool FilterBrush( brush_t *pb ){ filterbrush = true; } break; + case EXCLUDE_AREAPORTALS: + if ( f->texdef.contents & CONTENTS_AREAPORTAL ) { + filterbrush = true; + } + if (strstr( f->pShader->getName(), "common/occlude" ) ) { + filterbrush = true; + } + break; case EXCLUDE_TRANSLUCENT: if ( f->texdef.contents & CONTENTS_WINDOW ) { filterbrush = true; diff --git a/radiant/qfiles.h b/radiant/qfiles.h index cb8fd156..58608dcf 100644 --- a/radiant/qfiles.h +++ b/radiant/qfiles.h @@ -362,6 +362,8 @@ typedef struct #define CONTENTS_MIST 64 #define LAST_VISIBLE_CONTENTS 64 +#define CONTENTS_AREAPORTAL 0x8000 + // remaining contents are non-visible, and don't eat brushes #define CONTENTS_PLAYERCLIP 0x10000 #define CONTENTS_MONSTERCLIP 0x20000