From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Camera/CullResults.cpp | 81 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 Runtime/Camera/CullResults.cpp (limited to 'Runtime/Camera/CullResults.cpp') diff --git a/Runtime/Camera/CullResults.cpp b/Runtime/Camera/CullResults.cpp new file mode 100644 index 0000000..7b345b1 --- /dev/null +++ b/Runtime/Camera/CullResults.cpp @@ -0,0 +1,81 @@ +#include "UnityPrefix.h" +#include "CullResults.h" +#include "ShadowCulling.h"//@TODO: Remove +#include "UmbraBackwardsCompatibility.h" + +CullResults::CullResults() : shadowCullData(NULL), treeSceneNodes(kMemTempAlloc), treeBoundingBoxes(kMemTempAlloc) +{ +} + +CullResults::~CullResults() +{ + Umbra::Visibility* umbra = sceneCullingOutput.umbraVisibility; + if (umbra != NULL) + { + int* clusterBuffer = (int*)umbra->getOutputClusters()->getPtr(); + UNITY_FREE(kMemTempAlloc, clusterBuffer); + + Umbra::IndexList* outputObjects = umbra->getOutputObjects(); + Umbra::OcclusionBuffer* outputBuffer = umbra->getOutputBuffer(); + Umbra::IndexList* outputCluster = umbra->getOutputClusters(); + + UNITY_DELETE(outputObjects, kMemTempAlloc); + UNITY_DELETE(outputBuffer, kMemTempAlloc); + UNITY_DELETE(outputCluster, kMemTempAlloc); + UNITY_DELETE(umbra, kMemTempAlloc); + } + + DestroyCullingOutput(sceneCullingOutput); + + UNITY_DELETE(shadowCullData, kMemTempAlloc); +} + +void InitIndexList (IndexList& list, size_t count) +{ + int* array = (int*)UNITY_MALLOC (kMemTempAlloc, count * sizeof(int)); + list = IndexList (array, 0, count); +} + +void DestroyIndexList (IndexList& list) +{ + UNITY_FREE(kMemTempAlloc, list.indices); + list.indices = NULL; +} + +void CreateCullingOutput (const RendererCullData* rendererCullData, CullingOutput& cullingOutput) +{ + for(int i=0;isetOutputClusters(clusterList); + + sceneCullingOutput.umbraVisibility = umbraVisibility; + } + else + { + sceneCullingOutput.umbraVisibility = NULL; + } +} -- cgit v1.1-26-g67d0