From 4110c246626b6a7519380b2bf2ffce695189d297 Mon Sep 17 00:00:00 2001 From: raccoon Date: Sun, 3 Nov 2024 17:33:10 +0500 Subject: [PATCH] Added Auto Occlusion Portal --- .../materials/window-imposter.mat | 84 ++++++ .../materials/window-imposter.mat.meta | 8 + .../scenes/occlusion-culling-world.unity | 259 +++++++++++++++++- Assets/measuregeneric/scripts.meta | 8 + Assets/measuregeneric/scripts/Autoportal.cs | 46 ++++ .../measuregeneric/scripts/Autoportal.cs.meta | 11 + 6 files changed, 410 insertions(+), 6 deletions(-) create mode 100644 Assets/measuregeneric/materials/window-imposter.mat create mode 100644 Assets/measuregeneric/materials/window-imposter.mat.meta create mode 100644 Assets/measuregeneric/scripts.meta create mode 100644 Assets/measuregeneric/scripts/Autoportal.cs create mode 100644 Assets/measuregeneric/scripts/Autoportal.cs.meta diff --git a/Assets/measuregeneric/materials/window-imposter.mat b/Assets/measuregeneric/materials/window-imposter.mat new file mode 100644 index 0000000..73a9030 --- /dev/null +++ b/Assets/measuregeneric/materials/window-imposter.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: window-imposter + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _SPECULARHIGHLIGHTS_OFF + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 1 + - _GlossyReflections: 1 + - _Metallic: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 0 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/measuregeneric/materials/window-imposter.mat.meta b/Assets/measuregeneric/materials/window-imposter.mat.meta new file mode 100644 index 0000000..a171f6c --- /dev/null +++ b/Assets/measuregeneric/materials/window-imposter.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 193e941aebe1a4f408ba57a79d37fdff +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/measuregeneric/scenes/occlusion-culling-world.unity b/Assets/measuregeneric/scenes/occlusion-culling-world.unity index 15975f4..512e78f 100644 --- a/Assets/measuregeneric/scenes/occlusion-culling-world.unity +++ b/Assets/measuregeneric/scenes/occlusion-culling-world.unity @@ -5,9 +5,9 @@ OcclusionCullingSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_OcclusionBakeSettings: - smallestOccluder: 1 + smallestOccluder: 0.8 smallestHole: 0.1 - backfaceThreshold: 100 + backfaceThreshold: 90 m_SceneGUID: e65db8f50094e434bb515bd39ea1ccc2 m_OcclusionCullingData: {fileID: 36300000, guid: d67ede994b2f4254984a6bfae841329b, type: 2} @@ -148,6 +148,89 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: -8270500919132110871, guid: eaa9b4e696a29be40911ffa640c38d22, type: 3} +--- !u!1 &49341029 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 49341030} + - component: {fileID: 49341032} + - component: {fileID: 49341031} + m_Layer: 0 + m_Name: Imposter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 20 + m_IsActive: 1 +--- !u!4 &49341030 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 49341029} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -0.5, y: 0, z: 0} + m_LocalScale: {x: 3.2, y: 3.2, z: 3.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1847783282} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!23 &49341031 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 49341029} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 0 + m_StaticShadowCaster: 0 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 193e941aebe1a4f408ba57a79d37fdff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &49341032 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 49341029} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &67636940 GameObject: m_ObjectHideFlags: 0 @@ -609,6 +692,89 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: -1812281195186950719, guid: eaa9b4e696a29be40911ffa640c38d22, type: 3} +--- !u!1 &510754355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 510754356} + - component: {fileID: 510754358} + - component: {fileID: 510754357} + m_Layer: 0 + m_Name: Imposter (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 20 + m_IsActive: 1 +--- !u!4 &510754356 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510754355} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -0.5, y: 0, z: 0} + m_LocalScale: {x: 3.2, y: 3.2, z: 3.2} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1847783282} + m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0} +--- !u!23 &510754357 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510754355} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 0 + m_StaticShadowCaster: 0 + m_MotionVectors: 2 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 193e941aebe1a4f408ba57a79d37fdff, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &510754358 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 510754355} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &569530763 stripped GameObject: m_CorrespondingSourceObject: {fileID: -5568371526223589888, guid: eaa9b4e696a29be40911ffa640c38d22, @@ -1550,7 +1716,7 @@ PrefabInstance: - target: {fileID: -5568371526223589888, guid: eaa9b4e696a29be40911ffa640c38d22, type: 3} propertyPath: m_StaticEditorFlags - value: 2147483647 + value: 125 objectReference: {fileID: 0} - target: {fileID: -5467137908120073625, guid: eaa9b4e696a29be40911ffa640c38d22, type: 3} @@ -3511,13 +3677,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1069902874} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0.9659258, z: 0, w: 0.2588191} - m_LocalPosition: {x: -3.2, y: 1.6, z: 6.4} + m_LocalRotation: {x: -0, y: -0.7459082, z: -0, w: 0.6660489} + m_LocalPosition: {x: 6.07, y: 1.679, z: 14.27} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 150, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 623.526, z: 0} --- !u!1 &1132566213 GameObject: m_ObjectHideFlags: 0 @@ -6533,6 +6699,86 @@ MeshCollider: m_Convex: 0 m_CookingOptions: 30 m_Mesh: {fileID: 2028765479293697347, guid: eaa9b4e696a29be40911ffa640c38d22, type: 3} +--- !u!1 &1847783279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1847783282} + - component: {fileID: 1847783281} + - component: {fileID: 1847783280} + - component: {fileID: 1847783283} + m_Layer: 0 + m_Name: AutoPortal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1847783280 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847783279} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 6.4, y: 6.4, z: 6} + m_Center: {x: -0.5, y: 1.6000001, z: -0.19999981} +--- !u!41 &1847783281 +OcclusionPortal: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847783279} + m_Open: 0 + m_Center: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 3.2, z: 3.2} +--- !u!4 &1847783282 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847783279} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.7, y: 1.6, z: 14.400001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 49341030} + - {fileID: 510754356} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1847783283 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847783279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 16d3e87d2e756fb4484fef8f0e8526aa, type: 3} + m_Name: + m_EditorClassIdentifier: + imposter: {fileID: 0} --- !u!1 &1850744108 GameObject: m_ObjectHideFlags: 0 @@ -7139,3 +7385,4 @@ SceneRoots: - {fileID: 2102237736} - {fileID: 67636942} - {fileID: 1632003640} + - {fileID: 1847783282} diff --git a/Assets/measuregeneric/scripts.meta b/Assets/measuregeneric/scripts.meta new file mode 100644 index 0000000..80437a9 --- /dev/null +++ b/Assets/measuregeneric/scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e9dce35f4b628c479e47c768f958860 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/measuregeneric/scripts/Autoportal.cs b/Assets/measuregeneric/scripts/Autoportal.cs new file mode 100644 index 0000000..6be1cc5 --- /dev/null +++ b/Assets/measuregeneric/scripts/Autoportal.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Autoportal : MonoBehaviour +{ + public GameObject imposter; + + private List imposters; + + private OcclusionPortal portal; + + void Start() + { + this.portal = this.GetComponent(); + // this.imposter = this.transform.GetChild(0).gameObject; + this.imposters = new List(); + + foreach(Transform child in this.transform) + { + this.imposters.Add(child.gameObject); + } + } + + private void OnTriggerEnter(Collider other) + { + this.portal.open = true; + // this.imposter.SetActive(false); + + foreach(GameObject imposter in this.imposters) + { + imposter.SetActive(false); + } + } + + private void OnTriggerExit(Collider other) + { + this.portal.open = false; + // this.imposter.SetActive(true); + + foreach(GameObject imposter in this.imposters) + { + imposter.SetActive(true); + } + } +} diff --git a/Assets/measuregeneric/scripts/Autoportal.cs.meta b/Assets/measuregeneric/scripts/Autoportal.cs.meta new file mode 100644 index 0000000..fc9991a --- /dev/null +++ b/Assets/measuregeneric/scripts/Autoportal.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 16d3e87d2e756fb4484fef8f0e8526aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: