From 102bdc49f00e60fb836c50ecd163969a3f6f2879 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Sun, 12 Mar 2017 14:33:42 -0600 Subject: [PATCH] light: drop IntersectSingleModel api --- include/light/trace.hh | 3 --- include/light/trace_embree.hh | 1 - light/trace.cc | 13 ---------- light/trace_embree.cc | 49 ----------------------------------- 4 files changed, 66 deletions(-) diff --git a/include/light/trace.hh b/include/light/trace.hh index 58acd917..c8b088c0 100644 --- a/include/light/trace.hh +++ b/include/light/trace.hh @@ -53,9 +53,6 @@ qboolean TestSky(const vec3_t start, const vec3_t dirn, const dmodel_t *self); qboolean TestLight(const vec3_t start, const vec3_t stop, const dmodel_t *self); hittype_t DirtTrace(const vec3_t start, const vec3_t dirn, vec_t dist, const dmodel_t *self, vec_t *hitdist_out, plane_t *hitplane_out, const bsp2_dface_t **face_out); -// used for CalcPoints -bool IntersectSingleModel(const vec3_t start, const vec3_t dir, vec_t dist, const dmodel_t *self, vec_t *hitdist_out); - class raystream_t { public: virtual void pushRay(int i, const vec_t *origin, const vec3_t dir, float dist, const dmodel_t *selfshadow, const vec_t *color = nullptr, const vec_t *normalcontrib = nullptr) = 0; diff --git a/include/light/trace_embree.hh b/include/light/trace_embree.hh index 00b0518d..ac225d41 100644 --- a/include/light/trace_embree.hh +++ b/include/light/trace_embree.hh @@ -31,7 +31,6 @@ void Embree_TraceInit(const bsp2_t *bsp); qboolean Embree_TestSky(const vec3_t start, const vec3_t dirn, const dmodel_t *self); qboolean Embree_TestLight(const vec3_t start, const vec3_t stop, const dmodel_t *self); hittype_t Embree_DirtTrace(const vec3_t start, const vec3_t dirn, vec_t dist, const dmodel_t *self, vec_t *hitdist_out, plane_t *hitplane_out, const bsp2_dface_t **face_out); -bool Embree_IntersectSingleModel(const vec3_t start, const vec3_t dir, vec_t dist, const dmodel_t *self, vec_t *hitdist_out); raystream_t *Embree_MakeRayStream(int maxrays); diff --git a/light/trace.cc b/light/trace.cc index 7abf1c9a..c657a6ee 100644 --- a/light/trace.cc +++ b/light/trace.cc @@ -775,19 +775,6 @@ hittype_t DirtTrace(const vec3_t start, const vec3_t dirn, vec_t dist, const dmo Error("no backend available"); } -bool IntersectSingleModel(const vec3_t start, const vec3_t dir, vec_t dist, const dmodel_t *self, vec_t *hitdist_out) -{ -#ifdef HAVE_EMBREE - if (rtbackend == backend_embree) { - return Embree_IntersectSingleModel(start, dir, dist, self, hitdist_out); - } -#endif - if (rtbackend == backend_bsp) { - return BSP_IntersectSingleModel(start, dir, dist, self, hitdist_out); - } - Error("no backend available"); -} - class bsp_ray_t { public: int _pointindex; diff --git a/light/trace_embree.cc b/light/trace_embree.cc index 7468f07d..b6a43ed3 100644 --- a/light/trace_embree.cc +++ b/light/trace_embree.cc @@ -155,29 +155,6 @@ CreateGeometryFromWindings(RTCScene scene, const std::vector &windi rtcUnmapBuffer(scene, geomID, RTC_INDEX_BUFFER); } -// Creates a scene with just the faces in this model, -// used by CalcPoints. -// Liquids are left out but sky faces are included -RTCScene CreatePerModelScene(RTCDevice device, const bsp2_t *bsp, const dmodel_t *model) { - std::vector faces; - - for (int i=0; inumfaces; i++) { - const bsp2_dface_t *face = &bsp->dfaces[model->firstface + i]; - - const char *texname = Face_TextureName(bsp, face); - if (texname[0] == '*') { - // ignore liquids - } else { - faces.push_back(face); - } - } - - RTCScene scene = rtcDeviceNewScene(device, RTC_SCENE_STATIC | RTC_SCENE_COHERENT, RTC_INTERSECT1); - sceneinfo geom = CreateGeometry(bsp, scene, faces); - rtcCommit(scene); - return scene; -} - RTCDevice device; RTCScene scene; /* global shadow casters */ @@ -355,8 +332,6 @@ Embree_FilterFuncN(int* valid, } } -vector perModelScenes; - // building faces for skip-textured bmodels #if 0 @@ -597,12 +572,6 @@ Embree_TraceInit(const bsp2_t *bsp) Error("embree must be built with ray masks disabled"); } - // set up per-model scenes, used for CalcPoints - for (int i=0; inummodels; i++) { - perModelScenes.push_back(CreatePerModelScene(device, bsp, &bsp->dmodels[i])); - } - Q_assert(perModelScenes.size() == bsp->nummodels); - scene = rtcDeviceNewScene(device, RTC_SCENE_STATIC | RTC_SCENE_COHERENT, RTC_INTERSECT1 | RTC_INTERSECT_STREAM); skygeom = CreateGeometry(bsp, scene, skyfaces); solidgeom = CreateGeometry(bsp, scene, solidfaces); @@ -723,24 +692,6 @@ hittype_t Embree_DirtTrace(const vec3_t start, const vec3_t dirn, vec_t dist, co } } -// used for CalcPoints -bool Embree_IntersectSingleModel(const vec3_t start, const vec3_t dir, vec_t dist, const dmodel_t *self, vec_t *hitdist_out) -{ - const int modelnum = self - bsp_static->dmodels; - RTCScene singleModelScene = perModelScenes.at(modelnum); - - RTCRay ray = SetupRay(0, start, dir, dist, nullptr); - rtcIntersect(singleModelScene, ray); - - if (ray.geomID == RTC_INVALID_GEOMETRY_ID) - return false; // no obstruction - - if (hitdist_out) { - *hitdist_out = ray.tfar; - } - return true; -} - //enum class streamstate_t { // READY, DID_OCCLUDE, DID_INTERSECT //};