├── Assets ├── Snow.meta ├── Snow │ ├── Editor.meta │ ├── Editor │ │ ├── SnowShaderEditor.cs │ │ └── SnowShaderEditor.cs.meta │ ├── Press.cs │ ├── Press.cs.meta │ ├── Scripts.meta │ ├── Scripts │ │ ├── SnowRenderer.cs │ │ └── SnowRenderer.cs.meta │ ├── Shaders.meta │ ├── Shaders │ │ ├── SnowNormal.shader │ │ ├── SnowNormal.shader.meta │ │ ├── SnowRenderer.shader │ │ ├── SnowRenderer.shader.meta │ │ ├── SnowWorldPos.shader │ │ ├── SnowWorldPos.shader.meta │ │ ├── Tess-SnowRender.shader │ │ └── Tess-SnowRender.shader.meta │ ├── Snow1.meta │ ├── Snow1 │ │ ├── Ground_Snow_qbArm0_surface_Preview.png │ │ ├── Ground_Snow_qbArm0_surface_Preview.png.meta │ │ ├── SpecularGloss.png │ │ ├── SpecularGloss.png.meta │ │ ├── qbArm0.json │ │ ├── qbArm0.json.meta │ │ ├── qbArm_2K_AO.jpg │ │ ├── qbArm_2K_AO.jpg.meta │ │ ├── qbArm_2K_Albedo.jpg │ │ ├── qbArm_2K_Albedo.jpg.meta │ │ ├── qbArm_2K_Bump.jpg │ │ ├── qbArm_2K_Bump.jpg.meta │ │ ├── qbArm_2K_Cavity.jpg │ │ ├── qbArm_2K_Cavity.jpg.meta │ │ ├── qbArm_2K_Displacement.exr │ │ ├── qbArm_2K_Displacement.exr.meta │ │ ├── qbArm_2K_Displacement.jpg │ │ ├── qbArm_2K_Displacement.jpg.meta │ │ ├── qbArm_2K_Normal.jpg │ │ ├── qbArm_2K_Normal.jpg.meta │ │ ├── qbArm_2K_Roughness.jpg │ │ └── qbArm_2K_Roughness.jpg.meta │ ├── TestMaterial.mat │ └── TestMaterial.mat.meta ├── demo.unity └── demo.unity.meta ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset └── README.md /Assets/Snow.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 229106003cb04a84e897ade7e551671d 3 | folderAsset: yes 4 | timeCreated: 1521670178 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ada7853cecf0cc43a00ba251dcf6621 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Snow/Editor/SnowShaderEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEditor; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Collections; 6 | 7 | public class SnowShaderEditor : ShaderGUI 8 | { 9 | bool init = false; 10 | bool lastAlbedo = true; 11 | bool lastBump = true; 12 | bool lastSpecular = true; 13 | bool lastOcclusion = true; 14 | bool lastPhong = true; 15 | 16 | bool lastDetailAlbedo = true; 17 | bool lastDetailNormal = true; 18 | bool bump; 19 | bool specular; 20 | 21 | bool phong; 22 | bool occlusion; 23 | bool albedo; 24 | bool detailAlbedo; 25 | bool detailNormal; 26 | Dictionary propDict = new Dictionary (17); 27 | public override void OnGUI (MaterialEditor materialEditor, MaterialProperty[] properties) 28 | { 29 | Material targetMat = materialEditor.target as Material; 30 | // render the default gui 31 | base.OnGUI (materialEditor, properties); 32 | 33 | 34 | // see if redify is set, and show a checkbox 35 | // bool CS_BOOL = Array.IndexOf(targetMat.shaderKeywords, "CS_BOOL") != -1; 36 | propDict.Clear(); 37 | for (int i = 0; i < properties.Length; ++i) { 38 | propDict.Add (properties [i].name, properties [i]); 39 | } 40 | // CS_BOOL = EditorGUILayout.Toggle("CS_BOOL", CS_BOOL); 41 | bump = propDict ["_BumpMap"].textureValue != null; 42 | specular = propDict ["_SpecularMap"].textureValue != null; 43 | phong = propDict ["_Phong"].floatValue != 0; 44 | occlusion = propDict ["_OcclusionMap"].textureValue != null; 45 | albedo = propDict ["_MainTex"].textureValue != null; 46 | detailAlbedo = propDict ["_DetailAlbedo"].textureValue != null; 47 | detailNormal = propDict ["_DetailBump"].textureValue != null; 48 | if (!init) { 49 | init = true; 50 | if (albedo) 51 | targetMat.EnableKeyword ("USE_ALBEDO"); 52 | else 53 | targetMat.DisableKeyword ("USE_ALBEDO"); 54 | if (bump) 55 | targetMat.EnableKeyword ("USE_NORMAL"); 56 | else 57 | targetMat.DisableKeyword ("USE_NORMAL"); 58 | if (specular) 59 | targetMat.EnableKeyword ("USE_SPECULAR"); 60 | else 61 | targetMat.DisableKeyword ("USE_SPECULAR"); 62 | if (phong) 63 | targetMat.EnableKeyword ("USE_PHONG"); 64 | else 65 | targetMat.DisableKeyword ("USE_PHONG"); 66 | if (occlusion) 67 | targetMat.EnableKeyword ("USE_OCCLUSION"); 68 | else 69 | targetMat.DisableKeyword ("USE_OCCLUSION"); 70 | if (detailAlbedo) 71 | targetMat.EnableKeyword ("USE_DETAILALBEDO"); 72 | else 73 | targetMat.DisableKeyword ("USE_DETAILALBEDO"); 74 | if (detailNormal) 75 | targetMat.EnableKeyword ("USE_DETAILNORMAL"); 76 | else 77 | targetMat.DisableKeyword ("USE_DETAILNORMAL"); 78 | } 79 | if (lastBump != bump) { 80 | lastBump = bump; 81 | if (bump) 82 | targetMat.EnableKeyword ("USE_NORMAL"); 83 | else 84 | targetMat.DisableKeyword ("USE_NORMAL"); 85 | } 86 | 87 | if (lastAlbedo != albedo) { 88 | lastAlbedo = albedo; 89 | if (albedo) 90 | targetMat.EnableKeyword ("USE_ALBEDO"); 91 | else 92 | targetMat.DisableKeyword ("USE_ALBEDO"); 93 | } 94 | 95 | if (lastOcclusion != occlusion) { 96 | lastOcclusion = occlusion; 97 | if (occlusion) 98 | targetMat.EnableKeyword ("USE_OCCLUSION"); 99 | else 100 | targetMat.DisableKeyword ("USE_OCCLUSION"); 101 | } 102 | 103 | if (lastSpecular != specular) { 104 | lastSpecular = specular; 105 | if (specular) 106 | targetMat.EnableKeyword ("USE_SPECULAR"); 107 | else 108 | targetMat.DisableKeyword ("USE_SPECULAR"); 109 | } 110 | 111 | if (lastPhong != phong) { 112 | lastPhong = phong; 113 | if (phong) 114 | targetMat.EnableKeyword ("USE_PHONG"); 115 | else 116 | targetMat.DisableKeyword ("USE_PHONG"); 117 | } 118 | 119 | if (lastDetailAlbedo != detailAlbedo) { 120 | lastDetailAlbedo = detailAlbedo; 121 | if (detailAlbedo) 122 | targetMat.EnableKeyword ("USE_DETAILALBEDO"); 123 | else 124 | targetMat.DisableKeyword ("USE_DETAILALBEDO"); 125 | } 126 | 127 | if (lastDetailNormal != detailNormal) { 128 | lastDetailNormal = detailNormal; 129 | if (detailNormal) 130 | targetMat.EnableKeyword ("USE_DETAILNORMAL"); 131 | else 132 | targetMat.DisableKeyword ("USE_DETAILNORMAL"); 133 | } 134 | } 135 | } -------------------------------------------------------------------------------- /Assets/Snow/Editor/SnowShaderEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1b782f0571e0244b811d981204c952d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Snow/Press.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class Press : MonoBehaviour { 6 | 7 | // Use this for initialization 8 | void Start () { 9 | 10 | } 11 | 12 | // Update is called once per frame 13 | void Update () { 14 | if (Input.GetMouseButton (0)) { 15 | RaycastHit hit; 16 | if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit)) { 17 | transform.position = hit.point; 18 | } 19 | } else { 20 | transform.position = new Vector3 (10, 10000, 10); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Assets/Snow/Press.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bdeda6d84dd6cb4b8f4c132d1c20c9e 3 | timeCreated: 1521670178 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Snow/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1025d2717bdd5a41838a0ebe02ef507 3 | folderAsset: yes 4 | timeCreated: 1521632193 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Scripts/SnowRenderer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class SnowRenderer : MonoBehaviour { 6 | //Plane size: default Unity's plane is (10,10), local scale should be considered 7 | public Vector2 size = new Vector2 (10, 10); 8 | //Collapse map resolution 9 | public int resolution = 2048; 10 | //The plane's maximum height and depth camera's view distance, if you are using this component for the snow on a terrain. Please transform this value to the maximum height difference of this terrain, this value should not be less than 1 11 | public float planeHeight = 1; 12 | //Collapsible object mask 13 | public LayerMask mask; 14 | //Height map's vertex displacement scale 15 | public float vertexScale = 1; 16 | //Height map's vertex offset 17 | public float vertexOffset = 0.5f; 18 | //Height map 19 | public Texture heightMap; 20 | Camera cam; 21 | Camera normalCam; 22 | RenderTexture compare1Tex; //Camera render target 23 | RenderTexture targetTex; 24 | RenderTexture normalTex; 25 | 26 | int depthTexID; 27 | int snowNormalID; 28 | int worldPosID; 29 | int compareID; 30 | int vertexID; 31 | int heightMapID; 32 | void Awake () { 33 | var camGo = new GameObject ("snow cam", typeof(Camera)); 34 | camGo.hideFlags = HideFlags.HideAndDontSave; 35 | float aspect = size.x / size.y; 36 | compare1Tex = new RenderTexture ((int)(resolution * aspect), resolution, 24, RenderTextureFormat.RFloat); 37 | targetTex = new RenderTexture (compare1Tex.descriptor); 38 | cam = camGo.GetComponent (); 39 | camGo.transform.position = transform.position - Vector3.up * planeHeight; 40 | camGo.transform.eulerAngles = new Vector3 (-90, 0); 41 | camGo.transform.SetParent (transform); 42 | cam.renderingPath = RenderingPath.Forward; 43 | cam.orthographic = true; 44 | cam.orthographicSize = size.y / 2; 45 | cam.aspect = aspect; 46 | cam.targetTexture = compare1Tex; 47 | cam.clearFlags = CameraClearFlags.Depth; 48 | cam.enabled = false; 49 | cam.cullingMask = mask; 50 | cam.backgroundColor = Color.black; 51 | cam.allowMSAA = false; 52 | cam.useOcclusionCulling = false; 53 | cam.farClipPlane = planeHeight * 2; 54 | cam.allowHDR = false; 55 | normalCam = (Instantiate (camGo, transform) as GameObject).GetComponent (); 56 | normalCam.gameObject.hideFlags = HideFlags.HideAndDontSave; 57 | normalCam.CopyFrom (cam); 58 | normalCam.clearFlags = CameraClearFlags.Depth; 59 | normalTex = new RenderTexture ((int)(resolution * aspect), resolution, 24, RenderTextureFormat.ARGBFloat); 60 | normalCam.targetTexture = normalTex; 61 | cam.SetReplacementShader (Shader.Find ("Hidden/SnowWorldPos"), ""); 62 | normalCam.SetReplacementShader (Shader.Find ("Hidden/SnowNormal"), ""); 63 | compareID = Shader.PropertyToID ("_CompareTex"); 64 | depthTexID = Shader.PropertyToID ("_SnowDepthTex"); 65 | snowNormalID = Shader.PropertyToID ("_SnowNormalTex"); 66 | worldPosID = Shader.PropertyToID ("_WorldYPos"); 67 | vertexID = Shader.PropertyToID ("_VertexInfo"); 68 | heightMapID = Shader.PropertyToID ("_PlaneHeightMap"); 69 | var rd = GetComponent (); 70 | MaterialPropertyBlock block = new MaterialPropertyBlock (); 71 | block.SetTexture (depthTexID, targetTex); 72 | block.SetTexture (snowNormalID, normalTex); 73 | if (heightMap) { 74 | block.SetTexture ("_HeightMap", heightMap); 75 | block.SetVector (vertexID, new Vector4 (vertexScale, vertexOffset)); 76 | 77 | } else { 78 | vertexScale = 0; 79 | vertexOffset = 0; 80 | block.SetVector (vertexID, new Vector4 (vertexScale, vertexOffset)); 81 | } 82 | rd.SetPropertyBlock (block); 83 | } 84 | 85 | void OnWillRenderObject(){ 86 | Shader.SetGlobalVector (worldPosID, new Vector4(vertexScale, vertexOffset, transform.position.y)); 87 | Shader.SetGlobalTexture (compareID, targetTex); 88 | Shader.SetGlobalTexture (heightMapID, heightMap); 89 | cam.Render (); 90 | normalCam.Render (); 91 | Graphics.Blit (compare1Tex, targetTex); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Assets/Snow/Scripts/SnowRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eaa743eb0e71f554f8b11c4d61d5003a 3 | timeCreated: 1521632673 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1cd03b7bd5fad9440903494362d2808b 3 | folderAsset: yes 4 | timeCreated: 1521632199 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowNormal.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/SnowNormal" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | } 7 | SubShader 8 | { 9 | Tags { "RenderType"="Opaque" } 10 | LOD 100 11 | 12 | Pass 13 | { 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | #include "UnityCG.cginc" 18 | float4 _WorldYPos; 19 | sampler2D _CompareTex; 20 | sampler2D _PlaneHeightMap; 21 | struct appdata 22 | { 23 | float4 vertex : POSITION; 24 | float2 uv : TEXCOORD0; 25 | float3 normal : NORMAL; 26 | }; 27 | 28 | struct v2f 29 | { 30 | float4 vertex : SV_POSITION; 31 | float worldPos : TEXCOORD1; 32 | float3 normal : TEXCOORD2; 33 | float4 screenPos : TEXCOORD3; 34 | }; 35 | 36 | v2f vert (appdata v) 37 | { 38 | v2f o; 39 | o.vertex = UnityObjectToClipPos(v.vertex); 40 | o.worldPos = mul(unity_ObjectToWorld, v.vertex).y; 41 | o.screenPos = ComputeScreenPos(o.vertex); 42 | o.normal = v.normal; 43 | return o; 44 | } 45 | 46 | float4 frag (v2f i) : SV_Target 47 | { 48 | float2 screenUV = i.screenPos.xy / i.screenPos.w; 49 | float worldHeight = saturate(_WorldYPos.z + (tex2D(_PlaneHeightMap, screenUV).r - _WorldYPos.y) * _WorldYPos.x - i.worldPos); 50 | clip(worldHeight - (tex2D(_CompareTex, screenUV)).r); 51 | return float4(-i.normal * 0.5 + 0.5, 1); 52 | } 53 | ENDCG 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowNormal.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 951fb151bd900da49b1e85569e5e1b50 3 | timeCreated: 1521637765 4 | licenseType: Pro 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowRenderer.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/SnowRenderer" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | } 7 | SubShader 8 | { 9 | // No culling or depth 10 | 11 | //0. compare 1. worldPos 12 | Pass 13 | { 14 | Cull Off ZWrite Off ZTest Always 15 | CGPROGRAM 16 | #pragma vertex vert 17 | #pragma fragment frag 18 | 19 | #include "UnityCG.cginc" 20 | sampler2D _CompareTex; 21 | struct appdata 22 | { 23 | float4 vertex : POSITION; 24 | float2 uv : TEXCOORD0; 25 | }; 26 | 27 | struct v2f 28 | { 29 | float2 uv : TEXCOORD0; 30 | float4 vertex : SV_POSITION; 31 | }; 32 | 33 | v2f vert (appdata v) 34 | { 35 | v2f o; 36 | o.vertex = UnityObjectToClipPos(v.vertex); 37 | o.uv = v.uv; 38 | return o; 39 | } 40 | 41 | sampler2D _MainTex; 42 | 43 | float4 frag (v2f i) : SV_Target 44 | { 45 | float4 col = tex2D(_MainTex, i.uv); 46 | float4 compareCol = tex2D(_CompareTex, i.uv); 47 | return max(col, compareCol); 48 | } 49 | ENDCG 50 | } 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowRenderer.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a4f6a6a03c687d4cb6914dde09def2e 3 | timeCreated: 1521632538 4 | licenseType: Pro 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowWorldPos.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/SnowWorldPos" 2 | { 3 | Properties 4 | { 5 | _MainTex ("Texture", 2D) = "white" {} 6 | } 7 | SubShader 8 | { 9 | Tags { "RenderType"="Opaque" } 10 | LOD 100 11 | 12 | Pass 13 | { 14 | CGPROGRAM 15 | #pragma vertex vert 16 | #pragma fragment frag 17 | 18 | #include "UnityCG.cginc" 19 | float4 _WorldYPos; 20 | sampler2D _PlaneHeightMap; 21 | sampler2D _CompareTex; 22 | struct appdata 23 | { 24 | float4 vertex : POSITION; 25 | float2 uv : TEXCOORD0; 26 | }; 27 | 28 | struct v2f 29 | { 30 | float4 vertex : SV_POSITION; 31 | float4 screenPos : TEXCOORD2; 32 | float worldPos : TEXCOORD3; 33 | }; 34 | 35 | v2f vert (appdata v) 36 | { 37 | v2f o; 38 | o.vertex = UnityObjectToClipPos(v.vertex); 39 | o.screenPos = ComputeScreenPos(o.vertex); 40 | o.worldPos = mul(unity_ObjectToWorld, v.vertex).y; 41 | return o; 42 | } 43 | 44 | float frag (v2f i) : SV_Target 45 | { 46 | float2 screenUV = i.screenPos.xy / i.screenPos.w; 47 | float worldHeight = (_WorldYPos.z - (tex2D(_PlaneHeightMap, float2(1-screenUV.x,screenUV.y)).r - _WorldYPos.y) * _WorldYPos.x - i.worldPos); 48 | worldHeight = saturate(worldHeight * 0.5); 49 | clip(worldHeight - tex2D(_CompareTex, screenUV).r); 50 | return worldHeight; 51 | } 52 | ENDCG 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /Assets/Snow/Shaders/SnowWorldPos.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dccf284157066bb4d8d09772d331d66a 3 | timeCreated: 1521633400 4 | licenseType: Pro 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/Tess-SnowRender.shader: -------------------------------------------------------------------------------- 1 | Shader "Tessellation/SnowRender" { 2 | Properties { 3 | _MinDist("Tess Min Distance", float) = 10 4 | _MaxDist("Tess Max Distance", float) = 25 5 | _Tessellation("Tessellation", Range(1,63)) = 1 6 | _Phong ("Phong Strengh", Range(0,1)) = 0.5 7 | _Color ("Color", Color) = (1,1,1,1) 8 | _MainTex ("Albedo (RGB)", 2D) = "white" {} 9 | _BumpMap("Normal Map", 2D) = "bump" {} 10 | _NormalScale("Normal Scale", float) = 1 11 | _SpecularMap("Specular Map", 2D) = "white"{} 12 | _Glossiness ("Smoothness", Range(0,1)) = 0.5 13 | _OcclusionMap("Occlusion Map", 2D) = "white"{} 14 | _Occlusion("Occlusion Scale", Range(0,1)) = 1 15 | _SpecularColor("Metallic",Range(0,1)) = 0.3 16 | _EmissionColor("Emission Color", Color) = (0,0,0,1) 17 | _DetailAlbedo("Detail Albedo Map", 2D) = "black"{} 18 | _AlbedoBlend("Albedo Blend Rate", Range(0,1)) = 0.3 19 | _DetailBump("Detail Bump Map", 2D) = "bump"{} 20 | _BumpBlend("Bump Blend Rate", Range(0,1)) = 0.3 21 | } 22 | SubShader { 23 | Tags { "RenderType"="Opaque" } 24 | LOD 200 25 | 26 | 27 | CGINCLUDE 28 | 29 | #include "HLSLSupport.cginc" 30 | #include "UnityShaderVariables.cginc" 31 | #include "UnityShaderUtilities.cginc" 32 | #include "UnityCG.cginc" 33 | #include "Lighting.cginc" 34 | #include "UnityPBSLighting.cginc" 35 | #include "UnityMetaPass.cginc" 36 | #include "AutoLight.cginc" 37 | #pragma shader_feature USE_NORMAL 38 | #pragma shader_feature USE_SPECULAR 39 | #pragma shader_feature USE_PHONG 40 | #pragma shader_feature USE_OCCLUSION 41 | #pragma shader_feature USE_ALBEDO 42 | #pragma shader_feature USE_DETAILALBEDO 43 | #pragma shader_feature USE_DETAILNORMAL 44 | struct Input { 45 | float2 uv_MainTex; 46 | #if USE_DETAILALBEDO 47 | float2 uv_DetailAlbedo; 48 | #endif 49 | #if USE_DETAILNORMAL 50 | float2 uv_DetailNormal; 51 | #endif 52 | }; 53 | 54 | float _SpecularColor; 55 | fixed4 _EmissionColor; 56 | float _MinDist; 57 | float _MaxDist; 58 | float _Tessellation; 59 | float _HeightScale; 60 | float _Phong; 61 | float _NormalScale; 62 | float _Occlusion; 63 | float4 _VertexInfo; 64 | sampler2D _DetailAlbedo; 65 | float _AlbedoBlend; 66 | sampler2D _DetailBump; 67 | float _BumpBlend; 68 | float4 _DetailAlbedo_ST; 69 | float4 _DetailBump_ST; 70 | 71 | sampler2D _BumpMap; 72 | sampler2D _SpecularMap; 73 | sampler2D _OcclusionMap; 74 | sampler2D _HeightMap; 75 | sampler2D _MainTex; 76 | float _Glossiness; 77 | fixed4 _Color; 78 | 79 | 80 | 81 | inline void surf (Input IN, inout SurfaceOutputStandard o) { 82 | // Albedo comes from a texture tinted by color 83 | float2 uv = IN.uv_MainTex; 84 | #if USE_ALBEDO 85 | fixed4 c = tex2D (_MainTex, uv) * _Color; 86 | 87 | #if USE_DETAILALBEDO 88 | fixed4 dA = tex2D(_DetailAlbedo, IN.uv_DetailAlbedo); 89 | c.rgb = lerp(c.rgb, dA.rgb, _AlbedoBlend); 90 | #endif 91 | o.Albedo = c.rgb; 92 | o.Alpha = c.a; 93 | #else 94 | #if USE_DETAILALBEDO 95 | fixed4 dA = tex2D(_DetailAlbedo, IN.uv_DetailAlbedo); 96 | o.Albedo.rgb = lerp(1, dA.rgb, _AlbedoBlend) * _Color; 97 | #else 98 | o.Albedo = _Color.rgb; 99 | o.Alpha = _Color.a; 100 | #endif 101 | #endif 102 | 103 | #if USE_OCCLUSION 104 | o.Occlusion = lerp(1, tex2D(_OcclusionMap, uv).r, _Occlusion); 105 | #else 106 | o.Occlusion = 1; 107 | #endif 108 | 109 | #if USE_SPECULAR 110 | fixed4 spec = tex2D(_SpecularMap, uv); 111 | o.Metallic = _SpecularColor * spec.r; 112 | o.Smoothness = _Glossiness * spec.a; 113 | #else 114 | o.Metallic = _SpecularColor; 115 | o.Smoothness = _Glossiness; 116 | #endif 117 | 118 | 119 | #if USE_NORMAL 120 | o.Normal = UnpackNormal(tex2D(_BumpMap, uv)); 121 | #if USE_DETAILNORMAL 122 | fixed4 dN = tex2D(_DetailBump,IN.uv_DetailNormal); 123 | o.Normal = lerp(o.Normal, UnpackNormal(dN), _BumpBlend); 124 | #endif 125 | o.Normal.xy *= _NormalScale; 126 | 127 | #else 128 | o.Normal = float3(0,0,1); 129 | #endif 130 | 131 | o.Emission = _EmissionColor; 132 | } 133 | struct InternalTessInterp_appdata_full { 134 | float4 vertex : INTERNALTESSPOS; 135 | float4 tangent : TANGENT; 136 | float3 normal : NORMAL; 137 | float4 texcoord : TEXCOORD0; 138 | float4 texcoord1 : TEXCOORD1; 139 | float4 texcoord2 : TEXCOORD2; 140 | 141 | fixed4 color : COLOR; 142 | }; 143 | inline InternalTessInterp_appdata_full tessvert_surf (appdata_full v) { 144 | InternalTessInterp_appdata_full o; 145 | o.vertex = v.vertex; 146 | o.tangent = v.tangent; 147 | o.normal = v.normal; 148 | o.texcoord = v.texcoord; 149 | o.texcoord1 = v.texcoord1; 150 | o.texcoord2 = v.texcoord2; 151 | o.color = v.color; 152 | return o; 153 | } 154 | sampler2D _SnowDepthTex; 155 | sampler2D _SnowNormalTex; 156 | inline void vert(inout appdata_full v){ 157 | v.vertex.xyz -= float3(0, (tex2Dlod(_SnowDepthTex, float4(1 - v.texcoord.x, v.texcoord.y, v.texcoord.zw)).r * 2 + (tex2Dlod(_HeightMap, v.texcoord).r - _VertexInfo.y) * _VertexInfo.x), 0); 158 | } 159 | 160 | inline void vert(inout appdata_base v){ 161 | v.vertex.xyz -= float3(0, (tex2Dlod(_SnowDepthTex, float4(1 - v.texcoord.x, v.texcoord.y, v.texcoord.zw)).r * 2 + (tex2Dlod(_HeightMap, v.texcoord).r - _VertexInfo.y) * _VertexInfo.x), 0); 162 | } 163 | 164 | inline float3 UnityCalcTriEdgeTessFactors (float3 triVertexFactors) 165 | { 166 | float3 tess; 167 | tess.x = 0.5 * (triVertexFactors.y + triVertexFactors.z); 168 | tess.y = 0.5 * (triVertexFactors.x + triVertexFactors.z); 169 | tess.z = 0.5 * (triVertexFactors.x + triVertexFactors.y); 170 | return tess; 171 | } 172 | 173 | 174 | inline float UnityCalcDistanceTessFactor (float4 vertex, float minDist, float maxDist, float tess) 175 | { 176 | float3 wpos = mul(unity_ObjectToWorld,vertex).xyz; 177 | float dist = distance (wpos, _WorldSpaceCameraPos); 178 | float f = clamp(1.0 - (dist - minDist) / (maxDist - minDist), 0.01, 1.0) * tess; 179 | return f; 180 | } 181 | 182 | inline float3 tessDist (float4 v0, float4 v1, float4 v2) 183 | { 184 | float3 f; 185 | f.x = UnityCalcDistanceTessFactor (v0,_MinDist,_MaxDist,_Tessellation); 186 | f.y = UnityCalcDistanceTessFactor (v1,_MinDist,_MaxDist,_Tessellation); 187 | f.z = UnityCalcDistanceTessFactor (v2,_MinDist,_MaxDist,_Tessellation); 188 | return UnityCalcTriEdgeTessFactors (f); 189 | 190 | } 191 | 192 | inline UnityTessellationFactors hsconst_surf (InputPatch v) { 193 | 194 | UnityTessellationFactors o; 195 | 196 | float3 tf = (tessDist(v[0].vertex, v[1].vertex, v[2].vertex)); 197 | o.edge[0] = tf.x; 198 | o.edge[1] = tf.y; 199 | o.edge[2] = tf.z; 200 | o.inside = (tf.x + tf.y + tf.z) * 0.33333333; 201 | 202 | return o; 203 | } 204 | 205 | [UNITY_domain("tri")] 206 | [UNITY_partitioning("fractional_odd")] 207 | [UNITY_outputtopology("triangle_cw")] 208 | [UNITY_patchconstantfunc("hsconst_surf")] 209 | [UNITY_outputcontrolpoints(3)] 210 | inline InternalTessInterp_appdata_full hs_surf (InputPatch v, uint id : SV_OutputControlPointID) { 211 | return v[id]; 212 | } 213 | ENDCG 214 | 215 | // ---- forward rendering base pass: 216 | Pass { 217 | Name "FORWARD" 218 | Tags { "LightMode" = "ForwardBase" } 219 | 220 | CGPROGRAM 221 | 222 | // compile directives 223 | #pragma vertex tessvert_surf 224 | #pragma fragment frag_surf 225 | #pragma hull hs_surf 226 | #pragma domain ds_surf 227 | #pragma target 5.0 228 | 229 | #pragma multi_compile_fog 230 | #pragma multi_compile_fwdbase 231 | 232 | // -------- variant for: 233 | 234 | // Surface shader code generated based on: 235 | // vertex modifier: 'disp' 236 | // writes to per-pixel normal: YES 237 | // writes to emission: YES 238 | // writes to occlusion: YES 239 | // needs world space reflection vector: no 240 | // needs world space normal vector: no 241 | // needs screen space position: no 242 | // needs world space position: no 243 | // needs view direction: no 244 | // needs world space view direction: no 245 | // needs world space position for lighting: YES 246 | // needs world space view direction for lighting: YES 247 | // needs world space view direction for lightmaps: no 248 | // needs vertex color: no 249 | // needs VFACE: no 250 | // passes tangent-to-world matrix to pixel shader: YES 251 | // reads from normal: no 252 | // 1 texcoords actually used 253 | // float2 _MainTex 254 | #define UNITY_PASS_FORWARDBASE 255 | 256 | 257 | #define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2; 258 | #define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))) 259 | #define WorldNormalVector(data,normal) fixed3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)) 260 | 261 | // Original surface shader snippet: 262 | #line 22 "" 263 | #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING 264 | #endif 265 | 266 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 267 | 268 | // tessellation vertex shader 269 | 270 | 271 | // tessellation hull constant shader 272 | 273 | 274 | // tessellation hull shader 275 | 276 | 277 | #endif // UNITY_CAN_COMPILE_TESSELLATION 278 | 279 | 280 | // vertex-to-fragment interpolation data 281 | // no lightmaps: 282 | #ifndef LIGHTMAP_ON 283 | struct v2f_surf { 284 | UNITY_POSITION(pos); 285 | float2 pack0 : TEXCOORD0; // _MainTex 286 | float4 tSpace0 : TEXCOORD1; 287 | float4 tSpace1 : TEXCOORD2; 288 | float4 tSpace2 : TEXCOORD3; 289 | 290 | #if UNITY_SHOULD_SAMPLE_SH 291 | half3 sh : TEXCOORD4; // SH 292 | #endif 293 | UNITY_SHADOW_COORDS(5) 294 | UNITY_FOG_COORDS(6) 295 | #if SHADER_TARGET >= 30 296 | float4 lmap : TEXCOORD7; 297 | #endif 298 | 299 | #if USE_DETAILALBEDO 300 | float2 pack1 : TEXCOORD8; 301 | #endif 302 | 303 | #if USE_DETAILNORMAL 304 | float2 pack2 : TEXCOORD9; 305 | #endif 306 | float3 worldViewDir : TEXCOORD10; 307 | float3 lightDir : TEXCOORD11; 308 | float2 uv : TEXCOORD12; 309 | 310 | 311 | }; 312 | #endif 313 | // with lightmaps: 314 | #ifdef LIGHTMAP_ON 315 | struct v2f_surf { 316 | UNITY_POSITION(pos); 317 | float2 pack0 : TEXCOORD0; // _MainTex 318 | float4 tSpace0 : TEXCOORD1; 319 | float4 tSpace1 : TEXCOORD2; 320 | float4 tSpace2 : TEXCOORD3; 321 | 322 | float4 lmap : TEXCOORD4; 323 | UNITY_SHADOW_COORDS(5) 324 | UNITY_FOG_COORDS(6) 325 | 326 | 327 | #if USE_DETAILALBEDO 328 | float2 pack1 : TEXCOORD7; 329 | #endif 330 | 331 | #if USE_DETAILNORMAL 332 | float2 pack2 : TEXCOORD8; 333 | #endif 334 | float3 worldViewDir : TEXCOORD9; 335 | float3 lightDir : TEXCOORD10; 336 | float2 uv : TEXCOORD11; 337 | }; 338 | #endif 339 | float4 _MainTex_ST; 340 | 341 | // vertex shader 342 | inline v2f_surf vert_surf (appdata_full v) { 343 | 344 | v2f_surf o; 345 | UNITY_INITIALIZE_OUTPUT(v2f_surf,o); 346 | o.uv = float2(1 - v.texcoord.x, v.texcoord.y); 347 | o.pos = UnityObjectToClipPos(v.vertex); 348 | o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex); 349 | float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; 350 | o.worldViewDir = (UnityWorldSpaceViewDir(worldPos)); 351 | fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); 352 | fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz); 353 | fixed tangentSign = v.tangent.w * unity_WorldTransformParams.w; 354 | fixed3 worldBinormal = cross(worldNormal, worldTangent) * tangentSign; 355 | #if USE_DETAILALBEDO 356 | o.pack1 = TRANSFORM_TEX(v.texcoord,_DetailAlbedo); 357 | #endif 358 | #if USE_DETAILNORMAL 359 | o.pack2 = TRANSFORM_TEX(v.texcoord, _DetailBump); 360 | #endif 361 | o.tSpace0 = (float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x)); 362 | o.tSpace1 = (float4(worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y)); 363 | o.tSpace2 = (float4(worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z)); 364 | 365 | #ifdef DYNAMICLIGHTMAP_ON 366 | o.lmap.zw = v.texcoord2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; 367 | #endif 368 | #ifdef LIGHTMAP_ON 369 | o.lmap.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw; 370 | #endif 371 | 372 | // SH/ambient and vertex lights 373 | #ifndef LIGHTMAP_ON 374 | #if UNITY_SHOULD_SAMPLE_SH && !UNITY_SAMPLE_FULL_SH_PER_PIXEL 375 | o.sh = 0; 376 | // Approximated illumination from non-important point lights 377 | #ifdef VERTEXLIGHT_ON 378 | o.sh += Shade4PointLights ( 379 | unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0, 380 | unity_LightColor[0].rgb, unity_LightColor[1].rgb, unity_LightColor[2].rgb, unity_LightColor[3].rgb, 381 | unity_4LightAtten0, worldPos, worldNormal); 382 | #endif 383 | o.sh = ShadeSHPerVertex (worldNormal, o.sh); 384 | #endif 385 | #endif // !LIGHTMAP_ON 386 | 387 | UNITY_TRANSFER_SHADOW(o,v.texcoord1.xy); // pass shadow coordinates to pixel shader 388 | UNITY_TRANSFER_FOG(o,o.pos); // pass fog coordinates to pixel shader 389 | #ifndef USING_DIRECTIONAL_LIGHT 390 | o.lightDir = (UnityWorldSpaceLightDir(worldPos)); 391 | #else 392 | o.lightDir = _WorldSpaceLightPos0.xyz; 393 | #endif 394 | return o; 395 | } 396 | 397 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 398 | 399 | // tessellation domain shader 400 | [UNITY_domain("tri")] 401 | inline v2f_surf ds_surf (UnityTessellationFactors tessFactors, const OutputPatch vi, float3 bary : SV_DomainLocation) { 402 | appdata_full v; 403 | 404 | v.vertex = vi[0].vertex*bary.x + vi[1].vertex*bary.y + vi[2].vertex*bary.z; 405 | 406 | #if USE_PHONG 407 | float3 pp[3]; 408 | pp[0] = v.vertex.xyz - vi[0].normal * (dot(v.vertex.xyz, vi[0].normal) - dot(vi[0].vertex.xyz, vi[0].normal)); 409 | pp[1] = v.vertex.xyz - vi[1].normal * (dot(v.vertex.xyz, vi[1].normal) - dot(vi[1].vertex.xyz, vi[1].normal)); 410 | pp[2] = v.vertex.xyz - vi[2].normal * (dot(v.vertex.xyz, vi[2].normal) - dot(vi[2].vertex.xyz, vi[2].normal)); 411 | v.vertex.xyz = _Phong * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-_Phong) * v.vertex.xyz; 412 | #endif 413 | 414 | v.tangent = vi[0].tangent*bary.x + vi[1].tangent*bary.y + vi[2].tangent*bary.z; 415 | v.normal = vi[0].normal*bary.x + vi[1].normal*bary.y + vi[2].normal*bary.z; 416 | v.texcoord = vi[0].texcoord*bary.x + vi[1].texcoord*bary.y + vi[2].texcoord*bary.z; 417 | v.texcoord1 = vi[0].texcoord1*bary.x + vi[1].texcoord1*bary.y + vi[2].texcoord1*bary.z; 418 | v.texcoord2 = vi[0].texcoord2*bary.x + vi[1].texcoord2*bary.y + vi[2].texcoord2*bary.z; 419 | v.texcoord3 = 0; 420 | v.color = 0; 421 | 422 | vert(v); 423 | 424 | v2f_surf o = vert_surf (v); 425 | return o; 426 | } 427 | 428 | #endif // UNITY_CAN_COMPILE_TESSELLATION 429 | 430 | 431 | // fragment shader 432 | inline fixed4 frag_surf (v2f_surf IN) : SV_Target { 433 | 434 | // prepare and unpack data 435 | Input surfIN; 436 | UNITY_INITIALIZE_OUTPUT(Input,surfIN); 437 | surfIN.uv_MainTex.x = 1.0; 438 | 439 | surfIN.uv_MainTex = IN.pack0.xy; 440 | #if USE_DETAILALBEDO 441 | surfIN.uv_DetailAlbedo = IN.pack1; 442 | #endif 443 | 444 | #if USE_DETAILNORMAL 445 | surfIN.uv_DetailNormal = IN.pack2; 446 | #endif 447 | float3 worldPos = float3(IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w); 448 | float3 lightDir = normalize(IN.lightDir); 449 | float3 worldViewDir = normalize(IN.worldViewDir); 450 | #ifdef UNITY_COMPILER_HLSL 451 | SurfaceOutputStandard o = (SurfaceOutputStandard)0; 452 | #else 453 | SurfaceOutputStandard o; 454 | #endif 455 | 456 | 457 | 458 | float3x3 wdMatrix= float3x3( normalize(IN.tSpace0.xyz), normalize(IN.tSpace1.xyz), normalize(IN.tSpace2.xyz)); 459 | 460 | 461 | // call surface function 462 | surf (surfIN, o); 463 | o.Normal += lerp(0, tex2D(_SnowNormalTex, IN.uv).rgb * 2 - 1, step(0.0001, (tex2D(_SnowDepthTex, IN.uv)).r)); 464 | // compute lighting & shadowing factor 465 | UNITY_LIGHT_ATTENUATION(atten, IN, worldPos) 466 | fixed4 c = 0; 467 | 468 | o.Normal = normalize(mul(wdMatrix, o.Normal)); 469 | 470 | // Setup lighting environment 471 | UnityGI gi; 472 | UNITY_INITIALIZE_OUTPUT(UnityGI, gi); 473 | gi.indirect.diffuse = 0; 474 | gi.indirect.specular = 0; 475 | gi.light.color = _LightColor0.rgb; 476 | gi.light.dir = lightDir; 477 | // Call GI (lightmaps/SH/reflections) lighting function 478 | UnityGIInput giInput; 479 | UNITY_INITIALIZE_OUTPUT(UnityGIInput, giInput); 480 | giInput.light = gi.light; 481 | giInput.worldPos = worldPos; 482 | giInput.worldViewDir = worldViewDir; 483 | giInput.atten = atten; 484 | #if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON) 485 | giInput.lightmapUV = IN.lmap; 486 | #else 487 | giInput.lightmapUV = 0.0; 488 | #endif 489 | #if UNITY_SHOULD_SAMPLE_SH && !UNITY_SAMPLE_FULL_SH_PER_PIXEL 490 | giInput.ambient = IN.sh; 491 | #else 492 | giInput.ambient.rgb = 0.0; 493 | #endif 494 | giInput.probeHDR[0] = unity_SpecCube0_HDR; 495 | giInput.probeHDR[1] = unity_SpecCube1_HDR; 496 | #if defined(UNITY_SPECCUBE_BLENDING) || defined(UNITY_SPECCUBE_BOX_PROJECTION) 497 | giInput.boxMin[0] = unity_SpecCube0_BoxMin; // .w holds lerp value for blending 498 | #endif 499 | #ifdef UNITY_SPECCUBE_BOX_PROJECTION 500 | giInput.boxMax[0] = unity_SpecCube0_BoxMax; 501 | giInput.probePosition[0] = unity_SpecCube0_ProbePosition; 502 | giInput.boxMax[1] = unity_SpecCube1_BoxMax; 503 | giInput.boxMin[1] = unity_SpecCube1_BoxMin; 504 | giInput.probePosition[1] = unity_SpecCube1_ProbePosition; 505 | #endif 506 | LightingStandard_GI(o, giInput, gi); 507 | 508 | // realtime lighting: call lighting function 509 | c += LightingStandard (o, worldViewDir, gi); 510 | c.rgb += o.Emission; 511 | UNITY_APPLY_FOG(IN.fogCoord, c); // apply fog 512 | UNITY_OPAQUE_ALPHA(c.a); 513 | return c; 514 | } 515 | 516 | 517 | 518 | ENDCG 519 | 520 | } 521 | 522 | // ---- forward rendering additive lights pass: 523 | Pass { 524 | Name "FORWARD" 525 | Tags { "LightMode" = "ForwardAdd" } 526 | ZWrite Off Blend One One 527 | 528 | CGPROGRAM 529 | // compile directives 530 | #pragma vertex tessvert_surf 531 | #pragma fragment frag_surf 532 | #pragma hull hs_surf 533 | #pragma domain ds_surf 534 | #pragma target 5.0 535 | 536 | #pragma multi_compile_fog 537 | #pragma skip_variants INSTANCING_ON 538 | #pragma multi_compile_fwdadd_fullshadows 539 | 540 | // -------- variant for: 541 | #if !defined(INSTANCING_ON) 542 | // Surface shader code generated based on: 543 | // vertex modifier: 'disp' 544 | // writes to per-pixel normal: YES 545 | // writes to emission: YES 546 | // writes to occlusion: YES 547 | // needs world space reflection vector: no 548 | // needs world space normal vector: no 549 | // needs screen space position: no 550 | // needs world space position: no 551 | // needs view direction: no 552 | // needs world space view direction: no 553 | // needs world space position for lighting: YES 554 | // needs world space view direction for lighting: YES 555 | // needs world space view direction for lightmaps: no 556 | // needs vertex color: no 557 | // needs VFACE: no 558 | // passes tangent-to-world matrix to pixel shader: YES 559 | // reads from normal: no 560 | // 1 texcoords actually used 561 | // float2 _MainTex 562 | #define UNITY_PASS_FORWARDADD 563 | 564 | 565 | #define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2; 566 | #define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))) 567 | #define WorldNormalVector(data,normal) fixed3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)) 568 | 569 | // Original surface shader snippet: 570 | #line 22 "" 571 | #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING 572 | #endif 573 | 574 | 575 | 576 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 577 | 578 | // tessellation vertex shader 579 | 580 | 581 | // tessellation hull constant shader 582 | 583 | 584 | // tessellation hull shader 585 | 586 | 587 | #endif // UNITY_CAN_COMPILE_TESSELLATION 588 | 589 | 590 | // vertex-to-fragment interpolation data 591 | struct v2f_surf { 592 | UNITY_POSITION(pos); 593 | float2 pack0 : TEXCOORD0; // _MainTex 594 | fixed3 tSpace0 : TEXCOORD1; 595 | fixed3 tSpace1 : TEXCOORD2; 596 | fixed3 tSpace2 : TEXCOORD3; 597 | float3 worldPos : TEXCOORD4; 598 | UNITY_SHADOW_COORDS(5) 599 | UNITY_FOG_COORDS(6) 600 | 601 | #if USE_DETAILALBEDO 602 | float2 pack1 : TEXCOORD7; 603 | #endif 604 | 605 | #if USE_DETAILNORMAL 606 | float2 pack2 : TEXCOORD8; 607 | #endif 608 | float3 worldViewDir : TEXCOORD9; 609 | float3 lightDir : TEXCOORD10; 610 | float2 uv : TEXCOORD11; 611 | }; 612 | float4 _MainTex_ST; 613 | 614 | // vertex shader 615 | inline v2f_surf vert_surf (appdata_full v) { 616 | 617 | v2f_surf o; 618 | UNITY_INITIALIZE_OUTPUT(v2f_surf,o); 619 | o.uv = float2(1 - v.texcoord.x, v.texcoord.y); 620 | o.pos = UnityObjectToClipPos(v.vertex); 621 | o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex); 622 | #if USE_DETAILALBEDO 623 | o.pack1 = TRANSFORM_TEX(v.texcoord,_DetailAlbedo); 624 | #endif 625 | #if USE_DETAILNORMAL 626 | o.pack2 = TRANSFORM_TEX(v.texcoord, _DetailBump); 627 | #endif 628 | float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; 629 | o.worldViewDir = (UnityWorldSpaceViewDir(worldPos)); 630 | fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); 631 | fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz); 632 | fixed tangentSign = v.tangent.w * unity_WorldTransformParams.w; 633 | fixed3 worldBinormal = cross(worldNormal, worldTangent) * tangentSign; 634 | o.tSpace0 = (fixed3(worldTangent.x, worldBinormal.x, worldNormal.x)); 635 | o.tSpace1 = (fixed3(worldTangent.y, worldBinormal.y, worldNormal.y)); 636 | o.tSpace2 = (fixed3(worldTangent.z, worldBinormal.z, worldNormal.z)); 637 | 638 | o.worldPos = worldPos; 639 | #ifndef USING_DIRECTIONAL_LIGHT 640 | o.lightDir = (UnityWorldSpaceLightDir(worldPos)); 641 | #else 642 | o.lightDir = _WorldSpaceLightPos0.xyz; 643 | #endif 644 | UNITY_TRANSFER_SHADOW(o,v.texcoord1.xy); // pass shadow coordinates to pixel shader 645 | UNITY_TRANSFER_FOG(o,o.pos); // pass fog coordinates to pixel shader 646 | return o; 647 | } 648 | 649 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 650 | 651 | // tessellation domain shader 652 | [UNITY_domain("tri")] 653 | inline v2f_surf ds_surf (UnityTessellationFactors tessFactors, const OutputPatch vi, float3 bary : SV_DomainLocation) { 654 | appdata_full v; 655 | v.vertex = vi[0].vertex*bary.x + vi[1].vertex*bary.y + vi[2].vertex*bary.z; 656 | #if USE_PHONG 657 | float3 pp[3]; 658 | pp[0] = v.vertex.xyz - vi[0].normal * (dot(v.vertex.xyz, vi[0].normal) - dot(vi[0].vertex.xyz, vi[0].normal)); 659 | pp[1] = v.vertex.xyz - vi[1].normal * (dot(v.vertex.xyz, vi[1].normal) - dot(vi[1].vertex.xyz, vi[1].normal)); 660 | pp[2] = v.vertex.xyz - vi[2].normal * (dot(v.vertex.xyz, vi[2].normal) - dot(vi[2].vertex.xyz, vi[2].normal)); 661 | v.vertex.xyz = _Phong * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-_Phong) * v.vertex.xyz; 662 | #endif 663 | v.tangent = vi[0].tangent*bary.x + vi[1].tangent*bary.y + vi[2].tangent*bary.z; 664 | v.normal = vi[0].normal*bary.x + vi[1].normal*bary.y + vi[2].normal*bary.z; 665 | v.texcoord = vi[0].texcoord*bary.x + vi[1].texcoord*bary.y + vi[2].texcoord*bary.z; 666 | v.texcoord1 = vi[0].texcoord1*bary.x + vi[1].texcoord1*bary.y + vi[2].texcoord1*bary.z; 667 | v.texcoord2 = 0; 668 | v.texcoord3 = 0; 669 | v.color = 0; 670 | 671 | vert(v); 672 | 673 | v2f_surf o = vert_surf (v); 674 | return o; 675 | } 676 | 677 | #endif // UNITY_CAN_COMPILE_TESSELLATION 678 | 679 | 680 | // fragment shader 681 | inline fixed4 frag_surf (v2f_surf IN) : SV_Target { 682 | 683 | // prepare and unpack data 684 | Input surfIN; 685 | UNITY_INITIALIZE_OUTPUT(Input,surfIN); 686 | surfIN.uv_MainTex.x = 1.0; 687 | 688 | surfIN.uv_MainTex = IN.pack0.xy; 689 | #if USE_DETAILALBEDO 690 | surfIN.uv_DetailAlbedo = IN.pack1; 691 | #endif 692 | 693 | #if USE_DETAILNORMAL 694 | surfIN.uv_DetailNormal = IN.pack2; 695 | #endif 696 | float3 worldPos = (IN.worldPos); 697 | float3 lightDir = normalize(IN.lightDir); 698 | float3 worldViewDir = normalize(IN.worldViewDir); 699 | #ifdef UNITY_COMPILER_HLSL 700 | SurfaceOutputStandard o = (SurfaceOutputStandard)0; 701 | #else 702 | SurfaceOutputStandard o; 703 | #endif 704 | 705 | 706 | 707 | float3x3 wdMatrix= float3x3( normalize(IN.tSpace0.xyz), normalize(IN.tSpace1.xyz), normalize(IN.tSpace2.xyz)); 708 | // call surface function 709 | 710 | surf (surfIN, o); 711 | o.Normal += lerp(0, tex2D(_SnowNormalTex, IN.uv).rgb * 2 - 1, step(0.0001, (tex2D(_SnowDepthTex, IN.uv)).r)); 712 | UNITY_LIGHT_ATTENUATION(atten, IN, worldPos) 713 | fixed4 c = 0; 714 | 715 | o.Normal = normalize(mul(wdMatrix, o.Normal)); 716 | // Setup lighting environment 717 | UnityGI gi; 718 | UNITY_INITIALIZE_OUTPUT(UnityGI, gi); 719 | gi.indirect.diffuse = 0; 720 | gi.indirect.specular = 0; 721 | gi.light.color = _LightColor0.rgb; 722 | gi.light.dir = lightDir; 723 | gi.light.color *= atten; 724 | c += LightingStandard (o, worldViewDir, gi); 725 | c.a = 0.0; 726 | UNITY_APPLY_FOG(IN.fogCoord, c); // apply fog 727 | UNITY_OPAQUE_ALPHA(c.a); 728 | return c; 729 | } 730 | 731 | 732 | #endif 733 | 734 | 735 | ENDCG 736 | 737 | } 738 | 739 | // ---- deferred shading pass: 740 | Pass { 741 | Name "DEFERRED" 742 | Tags { "LightMode" = "Deferred" } 743 | 744 | CGPROGRAM 745 | // compile directives 746 | #pragma vertex tessvert_surf 747 | #pragma fragment frag_surf 748 | #pragma hull hs_surf 749 | #pragma domain ds_surf 750 | #pragma target 5.0 751 | 752 | #pragma exclude_renderers nomrt 753 | #pragma skip_variants FOG_LINEAR FOG_EXP FOG_EXP2 754 | #pragma multi_compile_prepassfinal 755 | 756 | // -------- variant for: 757 | #if !defined(INSTANCING_ON) 758 | // Surface shader code generated based on: 759 | // vertex modifier: 'disp' 760 | // writes to per-pixel normal: YES 761 | // writes to emission: YES 762 | // writes to occlusion: YES 763 | // needs world space reflection vector: no 764 | // needs world space normal vector: no 765 | // needs screen space position: no 766 | // needs world space position: no 767 | // needs view direction: no 768 | // needs world space view direction: no 769 | // needs world space position for lighting: YES 770 | // needs world space view direction for lighting: YES 771 | // needs world space view direction for lightmaps: no 772 | // needs vertex color: no 773 | // needs VFACE: no 774 | // passes tangent-to-world matrix to pixel shader: YES 775 | // reads from normal: no 776 | // 1 texcoords actually used 777 | // float2 _MainTex 778 | #define UNITY_PASS_DEFERRED 779 | 780 | 781 | #define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2; 782 | #define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))) 783 | #define WorldNormalVector(data,normal) fixed3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)) 784 | 785 | // Original surface shader snippet: 786 | #line 22 "" 787 | #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING 788 | #endif 789 | 790 | 791 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 792 | 793 | // tessellation vertex shader 794 | 795 | 796 | // tessellation hull constant shader 797 | 798 | 799 | // tessellation hull shader 800 | 801 | 802 | #endif // UNITY_CAN_COMPILE_TESSELLATION 803 | 804 | 805 | // vertex-to-fragment interpolation data 806 | struct v2f_surf { 807 | UNITY_POSITION(pos); 808 | float2 pack0 : TEXCOORD0; // _MainTex 809 | float4 tSpace0 : TEXCOORD1; 810 | float4 tSpace1 : TEXCOORD2; 811 | float4 tSpace2 : TEXCOORD3; 812 | #ifndef DIRLIGHTMAP_OFF 813 | half3 viewDir : TEXCOORD4; 814 | #endif 815 | float4 lmap : TEXCOORD5; 816 | #ifndef LIGHTMAP_ON 817 | #if UNITY_SHOULD_SAMPLE_SH && !UNITY_SAMPLE_FULL_SH_PER_PIXEL 818 | half3 sh : TEXCOORD6; // SH 819 | #endif 820 | #else 821 | #ifdef DIRLIGHTMAP_OFF 822 | float4 lmapFadePos : TEXCOORD6; 823 | #endif 824 | #endif 825 | 826 | #if USE_DETAILALBEDO 827 | float2 pack1 : TEXCOORD7; 828 | #endif 829 | 830 | #if USE_DETAILNORMAL 831 | float2 pack2 : TEXCOORD8; 832 | #endif 833 | float3 worldViewDir : TEXCOORD9; 834 | float2 uv : TEXCOORD10; 835 | }; 836 | float4 _MainTex_ST; 837 | 838 | // vertex shader 839 | inline v2f_surf vert_surf (appdata_full v) { 840 | 841 | v2f_surf o; 842 | UNITY_INITIALIZE_OUTPUT(v2f_surf,o); 843 | o.uv = float2(1 - v.texcoord.x, v.texcoord.y); 844 | o.pos = UnityObjectToClipPos(v.vertex); 845 | o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex); 846 | #if USE_DETAILALBEDO 847 | o.pack1 = TRANSFORM_TEX(v.texcoord,_DetailAlbedo); 848 | #endif 849 | #if USE_DETAILNORMAL 850 | o.pack2 = TRANSFORM_TEX(v.texcoord, _DetailBump); 851 | #endif 852 | float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; 853 | fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); 854 | fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz); 855 | fixed tangentSign = v.tangent.w * unity_WorldTransformParams.w; 856 | fixed3 worldBinormal = cross(worldNormal, worldTangent) * tangentSign; 857 | o.tSpace0 = (float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x)); 858 | o.tSpace1 = (float4(worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y)); 859 | o.tSpace2 = (float4(worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z)); 860 | 861 | float3 viewDirForLight = (UnityWorldSpaceViewDir(worldPos)); 862 | #ifndef DIRLIGHTMAP_OFF 863 | o.viewDir.x = dot(viewDirForLight, worldTangent); 864 | o.viewDir.y = dot(viewDirForLight, worldBinormal); 865 | o.viewDir.z = dot(viewDirForLight, worldNormal); 866 | #endif 867 | #ifdef DYNAMICLIGHTMAP_ON 868 | o.lmap.zw = v.texcoord2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw; 869 | #else 870 | o.lmap.zw = 0; 871 | #endif 872 | #ifdef LIGHTMAP_ON 873 | o.lmap.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw; 874 | #ifdef DIRLIGHTMAP_OFF 875 | o.lmapFadePos.xyz = (mul(unity_ObjectToWorld, v.vertex).xyz - unity_ShadowFadeCenterAndType.xyz) * unity_ShadowFadeCenterAndType.w; 876 | o.lmapFadePos.w = (-UnityObjectToViewPos(v.vertex).z) * (1.0 - unity_ShadowFadeCenterAndType.w); 877 | #endif 878 | #else 879 | o.lmap.xy = 0; 880 | #if UNITY_SHOULD_SAMPLE_SH && !UNITY_SAMPLE_FULL_SH_PER_PIXEL 881 | o.sh = 0; 882 | o.sh = ShadeSHPerVertex (worldNormal, o.sh); 883 | #endif 884 | #endif 885 | o.worldViewDir = viewDirForLight; 886 | return o; 887 | } 888 | 889 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 890 | 891 | // tessellation domain shader 892 | [UNITY_domain("tri")] 893 | inline v2f_surf ds_surf (UnityTessellationFactors tessFactors, const OutputPatch vi, float3 bary : SV_DomainLocation) { 894 | appdata_full v; 895 | v.vertex = vi[0].vertex*bary.x + vi[1].vertex*bary.y + vi[2].vertex*bary.z; 896 | #if USE_PHONG 897 | float3 pp[3]; 898 | pp[0] = v.vertex.xyz - vi[0].normal * (dot(v.vertex.xyz, vi[0].normal) - dot(vi[0].vertex.xyz, vi[0].normal)); 899 | pp[1] = v.vertex.xyz - vi[1].normal * (dot(v.vertex.xyz, vi[1].normal) - dot(vi[1].vertex.xyz, vi[1].normal)); 900 | pp[2] = v.vertex.xyz - vi[2].normal * (dot(v.vertex.xyz, vi[2].normal) - dot(vi[2].vertex.xyz, vi[2].normal)); 901 | v.vertex.xyz = _Phong * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-_Phong) * v.vertex.xyz; 902 | #endif 903 | v.tangent = vi[0].tangent*bary.x + vi[1].tangent*bary.y + vi[2].tangent*bary.z; 904 | v.normal = vi[0].normal*bary.x + vi[1].normal*bary.y + vi[2].normal*bary.z; 905 | v.texcoord = vi[0].texcoord*bary.x + vi[1].texcoord*bary.y + vi[2].texcoord*bary.z; 906 | v.texcoord1 = vi[0].texcoord1*bary.x + vi[1].texcoord1*bary.y + vi[2].texcoord1*bary.z; 907 | v.texcoord2 = vi[0].texcoord2*bary.x + vi[1].texcoord2*bary.y + vi[2].texcoord2*bary.z; 908 | v.texcoord3 = 0; 909 | v.color = 0; 910 | 911 | vert(v); 912 | 913 | v2f_surf o = vert_surf (v); 914 | return o; 915 | } 916 | 917 | #endif // UNITY_CAN_COMPILE_TESSELLATION 918 | 919 | #ifdef LIGHTMAP_ON 920 | float4 unity_LightmapFade; 921 | #endif 922 | fixed4 unity_Ambient; 923 | 924 | // fragment shader 925 | inline void frag_surf (v2f_surf IN, 926 | out half4 outGBuffer0 : SV_Target0, 927 | out half4 outGBuffer1 : SV_Target1, 928 | out half4 outGBuffer2 : SV_Target2, 929 | out half4 outEmission : SV_Target3 930 | #if defined(SHADOWS_SHADOWMASK) && (UNITY_ALLOWED_MRT_COUNT > 4) 931 | , out half4 outShadowMask : SV_Target4 932 | #endif 933 | ) { 934 | 935 | // prepare and unpack data 936 | Input surfIN; 937 | UNITY_INITIALIZE_OUTPUT(Input,surfIN); 938 | surfIN.uv_MainTex.x = 1.0; 939 | 940 | surfIN.uv_MainTex = IN.pack0.xy; 941 | #if USE_DETAILALBEDO 942 | surfIN.uv_DetailAlbedo = IN.pack1; 943 | #endif 944 | 945 | #if USE_DETAILNORMAL 946 | surfIN.uv_DetailNormal = IN.pack2; 947 | #endif 948 | float3 worldPos = float3(IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w); 949 | float3 worldViewDir = normalize(IN.worldViewDir); 950 | #ifdef UNITY_COMPILER_HLSL 951 | SurfaceOutputStandard o = (SurfaceOutputStandard)0; 952 | #else 953 | SurfaceOutputStandard o; 954 | #endif 955 | 956 | 957 | 958 | float3x3 wdMatrix= float3x3( normalize(IN.tSpace0.xyz), normalize(IN.tSpace1.xyz), normalize(IN.tSpace2.xyz)); 959 | surf (surfIN, o); 960 | o.Normal += lerp(0, tex2D(_SnowNormalTex, IN.uv).rgb * 2 - 1, step(0.0001, (tex2D(_SnowDepthTex, IN.uv)).r)); 961 | o.Normal = normalize(mul(wdMatrix, o.Normal)); 962 | 963 | // Setup lighting environment 964 | UnityGI gi; 965 | UNITY_INITIALIZE_OUTPUT(UnityGI, gi); 966 | gi.indirect.diffuse = 0; 967 | gi.indirect.specular = 0; 968 | gi.light.color = 0; 969 | gi.light.dir = half3(0,1,0); 970 | // Call GI (lightmaps/SH/reflections) lighting function 971 | UnityGIInput giInput; 972 | UNITY_INITIALIZE_OUTPUT(UnityGIInput, giInput); 973 | giInput.light = gi.light; 974 | giInput.worldPos = worldPos; 975 | giInput.worldViewDir = worldViewDir; 976 | giInput.atten = 1; 977 | #if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON) 978 | giInput.lightmapUV = IN.lmap; 979 | #else 980 | giInput.lightmapUV = 0.0; 981 | #endif 982 | #if UNITY_SHOULD_SAMPLE_SH && !UNITY_SAMPLE_FULL_SH_PER_PIXEL 983 | giInput.ambient = IN.sh; 984 | #else 985 | giInput.ambient.rgb = 0.0; 986 | #endif 987 | 988 | LightingStandard_GI(o, giInput, gi); 989 | 990 | // call lighting function to output g-buffer 991 | outEmission = LightingStandard_Deferred (o, worldViewDir, gi, outGBuffer0, outGBuffer1, outGBuffer2); 992 | #if defined(SHADOWS_SHADOWMASK) && (UNITY_ALLOWED_MRT_COUNT > 4) 993 | outShadowMask = UnityGetRawBakedOcclusions (IN.lmap.xy, float3(0, 0, 0)); 994 | #endif 995 | #ifndef UNITY_HDR_ON 996 | outEmission.rgb = exp2(-outEmission.rgb); 997 | #endif 998 | } 999 | 1000 | 1001 | #endif 1002 | 1003 | ENDCG 1004 | 1005 | } 1006 | // ---- meta information extraction pass: 1007 | Pass { 1008 | Name "Meta" 1009 | Tags { "LightMode" = "Meta" } 1010 | Cull Off 1011 | 1012 | CGPROGRAM 1013 | // compile directives 1014 | #pragma vertex tessvert_surf 1015 | #pragma fragment frag_surf 1016 | #pragma hull hs_surf 1017 | #pragma domain ds_surf 1018 | #pragma target 5.0 1019 | 1020 | #pragma skip_variants FOG_LINEAR FOG_EXP FOG_EXP2 1021 | #pragma skip_variants INSTANCING_ON 1022 | #pragma shader_feature EDITOR_VISUALIZATION 1023 | 1024 | 1025 | // -------- variant for: 1026 | #if !defined(INSTANCING_ON) 1027 | // Surface shader code generated based on: 1028 | // vertex modifier: 'disp' 1029 | // writes to per-pixel normal: YES 1030 | // writes to emission: YES 1031 | // writes to occlusion: YES 1032 | // needs world space reflection vector: no 1033 | // needs world space normal vector: no 1034 | // needs screen space position: no 1035 | // needs world space position: no 1036 | // needs view direction: no 1037 | // needs world space view direction: no 1038 | // needs world space position for lighting: YES 1039 | // needs world space view direction for lighting: YES 1040 | // needs world space view direction for lightmaps: no 1041 | // needs vertex color: no 1042 | // needs VFACE: no 1043 | // passes tangent-to-world matrix to pixel shader: YES 1044 | // reads from normal: no 1045 | // 1 texcoords actually used 1046 | // float2 _MainTex 1047 | #define UNITY_PASS_META 1048 | 1049 | #define INTERNAL_DATA half3 internalSurfaceTtoW0; half3 internalSurfaceTtoW1; half3 internalSurfaceTtoW2; 1050 | #define WorldReflectionVector(data,normal) reflect (data.worldRefl, half3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal))) 1051 | #define WorldNormalVector(data,normal) fixed3(dot(data.internalSurfaceTtoW0,normal), dot(data.internalSurfaceTtoW1,normal), dot(data.internalSurfaceTtoW2,normal)) 1052 | 1053 | // Original surface shader snippet: 1054 | #line 22 "" 1055 | #ifdef DUMMY_PREPROCESSOR_TO_WORK_AROUND_HLSL_COMPILER_LINE_HANDLING 1056 | #endif 1057 | 1058 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 1059 | 1060 | // tessellation vertex shader 1061 | 1062 | 1063 | // tessellation hull constant shader 1064 | 1065 | // tessellation hull shader 1066 | 1067 | 1068 | #endif // UNITY_CAN_COMPILE_TESSELLATION 1069 | 1070 | 1071 | 1072 | // vertex-to-fragment interpolation data 1073 | struct v2f_surf { 1074 | UNITY_POSITION(pos); 1075 | float2 pack0 : TEXCOORD0; // _MainTex 1076 | float4 tSpace0 : TEXCOORD1; 1077 | float4 tSpace1 : TEXCOORD2; 1078 | float4 tSpace2 : TEXCOORD3; 1079 | 1080 | }; 1081 | float4 _MainTex_ST; 1082 | 1083 | // vertex shader 1084 | inline v2f_surf vert_surf (appdata_full v) { 1085 | 1086 | v2f_surf o; 1087 | UNITY_INITIALIZE_OUTPUT(v2f_surf,o); 1088 | 1089 | o.pos = UnityMetaVertexPosition(v.vertex, v.texcoord1.xy, v.texcoord2.xy, unity_LightmapST, unity_DynamicLightmapST); 1090 | o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex); 1091 | float3 worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; 1092 | fixed3 worldNormal = UnityObjectToWorldNormal(v.normal); 1093 | fixed3 worldTangent = UnityObjectToWorldDir(v.tangent.xyz); 1094 | fixed tangentSign = v.tangent.w * unity_WorldTransformParams.w; 1095 | fixed3 worldBinormal = cross(worldNormal, worldTangent) * tangentSign; 1096 | o.tSpace0 = (float4(worldTangent.x, worldBinormal.x, worldNormal.x, worldPos.x)); 1097 | o.tSpace1 = (float4(worldTangent.y, worldBinormal.y, worldNormal.y, worldPos.y)); 1098 | o.tSpace2 = (float4(worldTangent.z, worldBinormal.z, worldNormal.z, worldPos.z)); 1099 | return o; 1100 | } 1101 | 1102 | #ifdef UNITY_CAN_COMPILE_TESSELLATION 1103 | 1104 | // tessellation domain shader 1105 | [UNITY_domain("tri")] 1106 | inline v2f_surf ds_surf (UnityTessellationFactors tessFactors, const OutputPatch vi, float3 bary : SV_DomainLocation) { 1107 | appdata_full v; 1108 | v.vertex = vi[0].vertex*bary.x + vi[1].vertex*bary.y + vi[2].vertex*bary.z; 1109 | #if USE_PHONG 1110 | float3 pp[3]; 1111 | pp[0] = v.vertex.xyz - vi[0].normal * (dot(v.vertex.xyz, vi[0].normal) - dot(vi[0].vertex.xyz, vi[0].normal)); 1112 | pp[1] = v.vertex.xyz - vi[1].normal * (dot(v.vertex.xyz, vi[1].normal) - dot(vi[1].vertex.xyz, vi[1].normal)); 1113 | pp[2] = v.vertex.xyz - vi[2].normal * (dot(v.vertex.xyz, vi[2].normal) - dot(vi[2].vertex.xyz, vi[2].normal)); 1114 | v.vertex.xyz = _Phong * (pp[0]*bary.x + pp[1]*bary.y + pp[2]*bary.z) + (1.0f-_Phong) * v.vertex.xyz; 1115 | #endif 1116 | v.tangent = vi[0].tangent*bary.x + vi[1].tangent*bary.y + vi[2].tangent*bary.z; 1117 | v.normal = vi[0].normal*bary.x + vi[1].normal*bary.y + vi[2].normal*bary.z; 1118 | v.texcoord = vi[0].texcoord*bary.x + vi[1].texcoord*bary.y + vi[2].texcoord*bary.z; 1119 | v.texcoord1 = vi[0].texcoord1*bary.x + vi[1].texcoord1*bary.y + vi[2].texcoord1*bary.z; 1120 | v.texcoord2 = vi[0].texcoord2*bary.x + vi[1].texcoord2*bary.y + vi[2].texcoord2*bary.z; 1121 | v.texcoord3 = 0; 1122 | v.color = 0; 1123 | 1124 | vert(v); 1125 | 1126 | v2f_surf o = vert_surf (v); 1127 | return o; 1128 | } 1129 | 1130 | #endif // UNITY_CAN_COMPILE_TESSELLATION 1131 | 1132 | 1133 | // fragment shader 1134 | inline fixed4 frag_surf (v2f_surf IN) : SV_Target { 1135 | 1136 | // prepare and unpack data 1137 | Input surfIN; 1138 | UNITY_INITIALIZE_OUTPUT(Input,surfIN); 1139 | surfIN.uv_MainTex.x = 1.0; 1140 | 1141 | surfIN.uv_MainTex = IN.pack0.xy; 1142 | float3 worldPos = float3(IN.tSpace0.w, IN.tSpace1.w, IN.tSpace2.w); 1143 | #ifdef UNITY_COMPILER_HLSL 1144 | SurfaceOutputStandard o = (SurfaceOutputStandard)0; 1145 | #else 1146 | SurfaceOutputStandard o; 1147 | #endif 1148 | 1149 | 1150 | 1151 | // call surface function 1152 | surf (surfIN, o); 1153 | UnityMetaInput metaIN; 1154 | UNITY_INITIALIZE_OUTPUT(UnityMetaInput, metaIN); 1155 | metaIN.Albedo = o.Albedo; 1156 | metaIN.Emission = o.Emission; 1157 | return UnityMetaFragment(metaIN); 1158 | } 1159 | 1160 | 1161 | #endif 1162 | 1163 | 1164 | ENDCG 1165 | 1166 | } 1167 | 1168 | // ---- end of surface shader generated code 1169 | 1170 | #LINE 90 1171 | 1172 | } 1173 | CustomEditor "SnowShaderEditor" 1174 | } 1175 | 1176 | -------------------------------------------------------------------------------- /Assets/Snow/Shaders/Tess-SnowRender.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fca308670a4ff9f408d5562a27f658c1 3 | timeCreated: 1521670288 4 | licenseType: Pro 5 | ShaderImporter: 6 | externalObjects: {} 7 | defaultTextures: [] 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fa71ba99147d196458344125d3f15e5d 3 | folderAsset: yes 4 | timeCreated: 1521670315 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/Ground_Snow_qbArm0_surface_Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/Ground_Snow_qbArm0_surface_Preview.png -------------------------------------------------------------------------------- /Assets/Snow/Snow1/Ground_Snow_qbArm0_surface_Preview.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ae3e03c7450e51f4582250a9dcbfbc77 3 | timeCreated: 1520053137 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/SpecularGloss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/SpecularGloss.png -------------------------------------------------------------------------------- /Assets/Snow/Snow1/SpecularGloss.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 209baafa438e532478179cb9acb55635 3 | timeCreated: 1520053309 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm0.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "snow", 3 | "tags": [ 4 | "White", 5 | "Bright", 6 | "Clear", 7 | "white", 8 | "bright", 9 | "clear" 10 | ], 11 | "previews": { 12 | "images": [ 13 | { 14 | "contentLength": 186198, 15 | "resolution": "360x360", 16 | "uri": "qbArm_Thumb.png", 17 | "tags": [ 18 | "thumb" 19 | ] 20 | }, 21 | { 22 | "contentLength": 680654, 23 | "resolution": "720x720", 24 | "uri": "qbArm_Thumb_Retina.png", 25 | "tags": [ 26 | "thumb", 27 | "retina" 28 | ] 29 | }, 30 | { 31 | "contentLength": 172607, 32 | "resolution": "360x360", 33 | "uri": "qbArm_ThumbClay.png", 34 | "tags": [ 35 | "thumb", 36 | "clay" 37 | ] 38 | }, 39 | { 40 | "contentLength": 696014, 41 | "resolution": "720x720", 42 | "uri": "qbArm_ThumbClay_Retina.png", 43 | "tags": [ 44 | "thumb", 45 | "clay", 46 | "retina" 47 | ] 48 | }, 49 | { 50 | "contentLength": 3366726, 51 | "resolution": "2048x2048", 52 | "uri": "qbArm_Bake.jpg", 53 | "tags": [ 54 | "bake", 55 | "jpeg" 56 | ] 57 | }, 58 | { 59 | "contentLength": 2222189, 60 | "resolution": "1440x768", 61 | "uri": "qbArm_PopupClay_1440.png", 62 | "tags": [ 63 | "preview", 64 | "clay" 65 | ] 66 | }, 67 | { 68 | "contentLength": 4146532, 69 | "resolution": "1920x1080", 70 | "uri": "qbArm_PopupClay_1920.png", 71 | "tags": [ 72 | "preview", 73 | "clay" 74 | ] 75 | }, 76 | { 77 | "contentLength": 8818698, 78 | "resolution": "2880x1536", 79 | "uri": "qbArm_PopupClay_2880.png", 80 | "tags": [ 81 | "preview", 82 | "clay", 83 | "retina" 84 | ] 85 | }, 86 | { 87 | "contentLength": 16930857, 88 | "resolution": "3840x2160", 89 | "uri": "qbArm_PopupClay_3840.png", 90 | "tags": [ 91 | "preview", 92 | "clay", 93 | "retina" 94 | ] 95 | }, 96 | { 97 | "contentLength": 2181743, 98 | "resolution": "1440x768", 99 | "uri": "qbArm_PopupTiled_1440.png", 100 | "tags": [ 101 | "preview", 102 | "tiled" 103 | ] 104 | }, 105 | { 106 | "contentLength": 4042632, 107 | "resolution": "1920x1080", 108 | "uri": "qbArm_PopupTiled_1920.png", 109 | "tags": [ 110 | "preview", 111 | "tiled" 112 | ] 113 | }, 114 | { 115 | "contentLength": 8655667, 116 | "resolution": "2880x1536", 117 | "uri": "qbArm_PopupTiled_2880.png", 118 | "tags": [ 119 | "preview", 120 | "tiled", 121 | "retina" 122 | ] 123 | }, 124 | { 125 | "contentLength": 16756901, 126 | "resolution": "3840x2160", 127 | "uri": "qbArm_PopupTiled_3840.png", 128 | "tags": [ 129 | "preview", 130 | "tiled", 131 | "retina" 132 | ] 133 | }, 134 | { 135 | "contentLength": 2202019, 136 | "resolution": "1440x768", 137 | "uri": "qbArm_Popup_1440.png", 138 | "tags": [ 139 | "preview" 140 | ] 141 | }, 142 | { 143 | "contentLength": 4076507, 144 | "resolution": "1920x1080", 145 | "uri": "qbArm_Popup_1920.png", 146 | "tags": [ 147 | "preview" 148 | ] 149 | }, 150 | { 151 | "contentLength": 8670442, 152 | "resolution": "2880x1536", 153 | "uri": "qbArm_Popup_2880.png", 154 | "tags": [ 155 | "preview", 156 | "retina" 157 | ] 158 | }, 159 | { 160 | "contentLength": 16726891, 161 | "resolution": "3840x2160", 162 | "uri": "qbArm_Popup_3840.png", 163 | "tags": [ 164 | "preview", 165 | "retina" 166 | ] 167 | }, 168 | { 169 | "contentLength": 630, 170 | "resolution": "24x24", 171 | "uri": "L08vn6+fv7+eHf3r63s/Pz8tjU0fn7+Pz+/Ono5/Pz8vHx7/X39ezs69HOy+Xk4t3b2NjV0g1T+0AAAAAQdFJOUwB44Cr661n+/Si+eHekoOC3Im+XAAAA+UlEQVQoz1WS2RaDIAxEUUsBV7ak6v9/aLOgtXmcm8mEHIzRCtNoS7XjFMyzwmpThFJrKXl9oLdNUAsUIojVvS99SgkACjDBnPM+t/4UuSCqJe+7egKNVyQpSLrbBgJranIEAZjd4RYyxMQOSlFQGZx+4OT4dHDIcZ6dGW898mqsk+PsjU2ykWbLugw+L9NWvbNJbwAaoP7COxE4GViA3yMUkMH3ZoxCrje0SQSmWOV+PEaTWX91JiDQiNZ+g37gk1Ssl551kF/kiAV1CpX0q4HOXrVZx7BOCVIz3t1/OnkcOh5OKtVP589wuOPjRV6G/38yb95TanfJX8O4IEjRp0bxAAAAAElFTkSuQmCC", 172 | "tags": [ 173 | "thumb", 174 | "tiny" 175 | ] 176 | }, 177 | { 178 | "contentLength": 22673, 179 | "resolution": "360x360", 180 | "uri": "qbArm_Thumb_thumb.jpg", 181 | "tags": [ 182 | "thumb", 183 | "jpeg" 184 | ] 185 | }, 186 | { 187 | "contentLength": 86233, 188 | "resolution": "720x720", 189 | "uri": "qbArm_Thumb_Retina_thumb.jpg", 190 | "tags": [ 191 | "thumb", 192 | "retina", 193 | "jpeg" 194 | ] 195 | }, 196 | { 197 | "contentLength": 17268, 198 | "resolution": "360x360", 199 | "uri": "qbArm_ThumbClay_thumb.jpg", 200 | "tags": [ 201 | "thumb", 202 | "clay", 203 | "jpeg" 204 | ] 205 | }, 206 | { 207 | "contentLength": 75783, 208 | "resolution": "720x720", 209 | "uri": "qbArm_ThumbClay_Retina_thumb.jpg", 210 | "tags": [ 211 | "thumb", 212 | "clay", 213 | "retina", 214 | "jpeg" 215 | ] 216 | }, 217 | { 218 | "contentLength": 356628, 219 | "resolution": "1440x768", 220 | "uri": "qbArm_PopupClay_1440_preview.jpg", 221 | "tags": [ 222 | "preview", 223 | "clay", 224 | "jpeg" 225 | ] 226 | }, 227 | { 228 | "contentLength": 672574, 229 | "resolution": "1920x1080", 230 | "uri": "qbArm_PopupClay_1920_preview.jpg", 231 | "tags": [ 232 | "preview", 233 | "clay", 234 | "jpeg" 235 | ] 236 | }, 237 | { 238 | "contentLength": 1398893, 239 | "resolution": "2880x1536", 240 | "uri": "qbArm_PopupClay_2880_preview.jpg", 241 | "tags": [ 242 | "preview", 243 | "clay", 244 | "retina", 245 | "jpeg" 246 | ] 247 | }, 248 | { 249 | "contentLength": 2731945, 250 | "resolution": "3840x2160", 251 | "uri": "qbArm_PopupClay_3840_preview.jpg", 252 | "tags": [ 253 | "preview", 254 | "clay", 255 | "retina", 256 | "jpeg" 257 | ] 258 | }, 259 | { 260 | "contentLength": 286137, 261 | "resolution": "1440x768", 262 | "uri": "qbArm_PopupTiled_1440_preview.jpg", 263 | "tags": [ 264 | "preview", 265 | "tiled", 266 | "jpeg" 267 | ] 268 | }, 269 | { 270 | "contentLength": 537000, 271 | "resolution": "1920x1080", 272 | "uri": "qbArm_PopupTiled_1920_preview.jpg", 273 | "tags": [ 274 | "preview", 275 | "tiled", 276 | "jpeg" 277 | ] 278 | }, 279 | { 280 | "contentLength": 1178172, 281 | "resolution": "2880x1536", 282 | "uri": "qbArm_PopupTiled_2880_preview.jpg", 283 | "tags": [ 284 | "preview", 285 | "tiled", 286 | "retina", 287 | "jpeg" 288 | ] 289 | }, 290 | { 291 | "contentLength": 2413119, 292 | "resolution": "3840x2160", 293 | "uri": "qbArm_PopupTiled_3840_preview.jpg", 294 | "tags": [ 295 | "preview", 296 | "tiled", 297 | "retina", 298 | "jpeg" 299 | ] 300 | }, 301 | { 302 | "contentLength": 303542, 303 | "resolution": "1440x768", 304 | "uri": "qbArm_Popup_1440_preview.jpg", 305 | "tags": [ 306 | "preview", 307 | "jpeg" 308 | ] 309 | }, 310 | { 311 | "contentLength": 559336, 312 | "resolution": "1920x1080", 313 | "uri": "qbArm_Popup_1920_preview.jpg", 314 | "tags": [ 315 | "preview", 316 | "jpeg" 317 | ] 318 | }, 319 | { 320 | "contentLength": 1153280, 321 | "resolution": "2880x1536", 322 | "uri": "qbArm_Popup_2880_preview.jpg", 323 | "tags": [ 324 | "preview", 325 | "retina", 326 | "jpeg" 327 | ] 328 | }, 329 | { 330 | "contentLength": 2264246, 331 | "resolution": "3840x2160", 332 | "uri": "qbArm_Popup_3840_preview.jpg", 333 | "tags": [ 334 | "preview", 335 | "retina", 336 | "jpeg" 337 | ] 338 | } 339 | ], 340 | "relativeSize": "1x1" 341 | }, 342 | "environment": { 343 | "biome": "none", 344 | "region": "none" 345 | }, 346 | "json": { 347 | "contentLength": 27515, 348 | "uri": "qbArm0.json" 349 | }, 350 | "meta": [ 351 | { 352 | "key": "scanArea", 353 | "name": "Scan Area", 354 | "value": "0.3x0.3 m" 355 | }, 356 | { 357 | "key": "height", 358 | "name": "Height", 359 | "value": "0.009 m" 360 | }, 361 | { 362 | "key": "tileable", 363 | "name": "Tileable", 364 | "value": true 365 | }, 366 | { 367 | "key": "texelDensity", 368 | "name": "Texel Density", 369 | "value": "12994 px/m" 370 | }, 371 | { 372 | "key": "calibration", 373 | "name": "Calibration", 374 | "value": "X-Rite ColorChecker Classic" 375 | }, 376 | { 377 | "key": "scanner", 378 | "name": "Scanner", 379 | "value": "SEM-MKII" 380 | } 381 | ], 382 | "references": [], 383 | "averageColor": "#C7BEBB", 384 | "components": [ 385 | { 386 | "minIntensity": 183, 387 | "name": "Albedo", 388 | "colorSpace": "sRGB", 389 | "maxIntensity": 200, 390 | "type": "albedo", 391 | "uris": [ 392 | { 393 | "physicalSize": "0.3x0.3", 394 | "resolutions": [ 395 | { 396 | "resolution": "4096x4096", 397 | "formats": [ 398 | { 399 | "mimeType": "image/x-exr", 400 | "contentLength": 47856936, 401 | "bitDepth": 16, 402 | "uri": "qbArm_4K_Albedo.exr" 403 | }, 404 | { 405 | "mimeType": "image/jpeg", 406 | "contentLength": 2753606, 407 | "bitDepth": 8, 408 | "uri": "qbArm_4K_Albedo.jpg" 409 | } 410 | ] 411 | }, 412 | { 413 | "resolution": "2048x2048", 414 | "formats": [ 415 | { 416 | "mimeType": "image/x-exr", 417 | "contentLength": 13085907, 418 | "bitDepth": 16, 419 | "uri": "qbArm_2K_Albedo.exr" 420 | }, 421 | { 422 | "mimeType": "image/jpeg", 423 | "contentLength": 925363, 424 | "bitDepth": 8, 425 | "uri": "qbArm_2K_Albedo.jpg" 426 | } 427 | ] 428 | }, 429 | { 430 | "resolution": "1024x1024", 431 | "formats": [ 432 | { 433 | "mimeType": "image/x-exr", 434 | "contentLength": 3335973, 435 | "bitDepth": 16, 436 | "uri": "qbArm_1K_Albedo.exr" 437 | }, 438 | { 439 | "mimeType": "image/jpeg", 440 | "contentLength": 315219, 441 | "bitDepth": 8, 442 | "uri": "qbArm_1K_Albedo.jpg" 443 | } 444 | ] 445 | }, 446 | { 447 | "resolution": "512x512", 448 | "formats": [ 449 | { 450 | "mimeType": "image/x-exr", 451 | "contentLength": 816733, 452 | "bitDepth": 16, 453 | "uri": "qbArm_512_Albedo.exr" 454 | }, 455 | { 456 | "mimeType": "image/jpeg", 457 | "contentLength": 87083, 458 | "bitDepth": 8, 459 | "uri": "qbArm_512_Albedo.jpg" 460 | } 461 | ] 462 | }, 463 | { 464 | "resolution": "256x256", 465 | "formats": [ 466 | { 467 | "mimeType": "image/x-exr", 468 | "contentLength": 200939, 469 | "bitDepth": 16, 470 | "uri": "qbArm_256_Albedo.exr" 471 | }, 472 | { 473 | "mimeType": "image/jpeg", 474 | "contentLength": 35808, 475 | "bitDepth": 8, 476 | "uri": "qbArm_256_Albedo.jpg" 477 | } 478 | ] 479 | } 480 | ] 481 | } 482 | ], 483 | "averageColor": "#C7BEBB" 484 | }, 485 | { 486 | "minIntensity": 0, 487 | "name": "AO", 488 | "colorSpace": "sRGB", 489 | "maxIntensity": 255, 490 | "type": "ao", 491 | "uris": [ 492 | { 493 | "physicalSize": "0.3x0.3", 494 | "resolutions": [ 495 | { 496 | "resolution": "4096x4096", 497 | "formats": [ 498 | { 499 | "mimeType": "image/x-exr", 500 | "contentLength": 28513022, 501 | "bitDepth": 32, 502 | "uri": "qbArm_4K_AO.exr" 503 | }, 504 | { 505 | "mimeType": "image/jpeg", 506 | "contentLength": 216956, 507 | "bitDepth": 8, 508 | "uri": "qbArm_4K_AO.jpg" 509 | } 510 | ] 511 | }, 512 | { 513 | "resolution": "2048x2048", 514 | "formats": [ 515 | { 516 | "mimeType": "image/x-exr", 517 | "contentLength": 9323186, 518 | "bitDepth": 32, 519 | "uri": "qbArm_2K_AO.exr" 520 | }, 521 | { 522 | "mimeType": "image/jpeg", 523 | "contentLength": 68803, 524 | "bitDepth": 8, 525 | "uri": "qbArm_2K_AO.jpg" 526 | } 527 | ] 528 | }, 529 | { 530 | "resolution": "1024x1024", 531 | "formats": [ 532 | { 533 | "mimeType": "image/x-exr", 534 | "contentLength": 1896292, 535 | "bitDepth": 32, 536 | "uri": "qbArm_1K_AO.exr" 537 | }, 538 | { 539 | "mimeType": "image/jpeg", 540 | "contentLength": 31427, 541 | "bitDepth": 8, 542 | "uri": "qbArm_1K_AO.jpg" 543 | } 544 | ] 545 | }, 546 | { 547 | "resolution": "512x512", 548 | "formats": [ 549 | { 550 | "mimeType": "image/x-exr", 551 | "contentLength": 547870, 552 | "bitDepth": 32, 553 | "uri": "qbArm_512_AO.exr" 554 | }, 555 | { 556 | "mimeType": "image/jpeg", 557 | "contentLength": 21957, 558 | "bitDepth": 8, 559 | "uri": "qbArm_512_AO.jpg" 560 | } 561 | ] 562 | }, 563 | { 564 | "resolution": "256x256", 565 | "formats": [ 566 | { 567 | "mimeType": "image/x-exr", 568 | "contentLength": 170174, 569 | "bitDepth": 32, 570 | "uri": "qbArm_256_AO.exr" 571 | }, 572 | { 573 | "mimeType": "image/jpeg", 574 | "contentLength": 19525, 575 | "bitDepth": 8, 576 | "uri": "qbArm_256_AO.jpg" 577 | } 578 | ] 579 | } 580 | ] 581 | } 582 | ], 583 | "averageColor": "#FFFFFF" 584 | }, 585 | { 586 | "minIntensity": 0, 587 | "name": "Cavity", 588 | "colorSpace": "sRGB", 589 | "maxIntensity": 255, 590 | "type": "cavity", 591 | "uris": [ 592 | { 593 | "physicalSize": "0.3x0.3", 594 | "resolutions": [ 595 | { 596 | "resolution": "4096x4096", 597 | "formats": [ 598 | { 599 | "mimeType": "image/x-exr", 600 | "contentLength": 15445926, 601 | "bitDepth": 32, 602 | "uri": "qbArm_4K_Cavity.exr" 603 | }, 604 | { 605 | "mimeType": "image/jpeg", 606 | "contentLength": 219625, 607 | "bitDepth": 8, 608 | "uri": "qbArm_4K_Cavity.jpg" 609 | } 610 | ] 611 | }, 612 | { 613 | "resolution": "2048x2048", 614 | "formats": [ 615 | { 616 | "mimeType": "image/x-exr", 617 | "contentLength": 6587838, 618 | "bitDepth": 32, 619 | "uri": "qbArm_2K_Cavity.exr" 620 | }, 621 | { 622 | "mimeType": "image/jpeg", 623 | "contentLength": 69999, 624 | "bitDepth": 8, 625 | "uri": "qbArm_2K_Cavity.jpg" 626 | } 627 | ] 628 | }, 629 | { 630 | "resolution": "1024x1024", 631 | "formats": [ 632 | { 633 | "mimeType": "image/x-exr", 634 | "contentLength": 319042, 635 | "bitDepth": 32, 636 | "uri": "qbArm_1K_Cavity.exr" 637 | }, 638 | { 639 | "mimeType": "image/jpeg", 640 | "contentLength": 31966, 641 | "bitDepth": 8, 642 | "uri": "qbArm_1K_Cavity.jpg" 643 | } 644 | ] 645 | }, 646 | { 647 | "resolution": "512x512", 648 | "formats": [ 649 | { 650 | "mimeType": "image/x-exr", 651 | "contentLength": 168727, 652 | "bitDepth": 32, 653 | "uri": "qbArm_512_Cavity.exr" 654 | }, 655 | { 656 | "mimeType": "image/jpeg", 657 | "contentLength": 22066, 658 | "bitDepth": 8, 659 | "uri": "qbArm_512_Cavity.jpg" 660 | } 661 | ] 662 | }, 663 | { 664 | "resolution": "256x256", 665 | "formats": [ 666 | { 667 | "mimeType": "image/x-exr", 668 | "contentLength": 89368, 669 | "bitDepth": 32, 670 | "uri": "qbArm_256_Cavity.exr" 671 | }, 672 | { 673 | "mimeType": "image/jpeg", 674 | "contentLength": 19544, 675 | "bitDepth": 8, 676 | "uri": "qbArm_256_Cavity.jpg" 677 | } 678 | ] 679 | } 680 | ] 681 | } 682 | ], 683 | "averageColor": "#FFFFFF" 684 | }, 685 | { 686 | "minIntensity": 123, 687 | "name": "Displacement", 688 | "colorSpace": "Linear", 689 | "maxIntensity": 134, 690 | "type": "displacement", 691 | "uris": [ 692 | { 693 | "physicalSize": "0.3x0.3", 694 | "resolutions": [ 695 | { 696 | "resolution": "4096x4096", 697 | "formats": [ 698 | { 699 | "mimeType": "image/x-exr", 700 | "contentLength": 44172470, 701 | "bitDepth": 32, 702 | "uri": "qbArm_4K_Displacement.exr" 703 | }, 704 | { 705 | "mimeType": "image/jpeg", 706 | "contentLength": 310101, 707 | "bitDepth": 8, 708 | "uri": "qbArm_4K_Displacement.jpg" 709 | } 710 | ] 711 | }, 712 | { 713 | "resolution": "2048x2048", 714 | "formats": [ 715 | { 716 | "mimeType": "image/x-exr", 717 | "contentLength": 12529081, 718 | "bitDepth": 32, 719 | "uri": "qbArm_2K_Displacement.exr" 720 | }, 721 | { 722 | "mimeType": "image/jpeg", 723 | "contentLength": 108627, 724 | "bitDepth": 8, 725 | "uri": "qbArm_2K_Displacement.jpg" 726 | } 727 | ] 728 | }, 729 | { 730 | "resolution": "1024x1024", 731 | "formats": [ 732 | { 733 | "mimeType": "image/x-exr", 734 | "contentLength": 3463746, 735 | "bitDepth": 32, 736 | "uri": "qbArm_1K_Displacement.exr" 737 | }, 738 | { 739 | "mimeType": "image/jpeg", 740 | "contentLength": 53918, 741 | "bitDepth": 8, 742 | "uri": "qbArm_1K_Displacement.jpg" 743 | } 744 | ] 745 | }, 746 | { 747 | "resolution": "512x512", 748 | "formats": [ 749 | { 750 | "mimeType": "image/x-exr", 751 | "contentLength": 875130, 752 | "bitDepth": 32, 753 | "uri": "qbArm_512_Displacement.exr" 754 | }, 755 | { 756 | "mimeType": "image/jpeg", 757 | "contentLength": 31019, 758 | "bitDepth": 8, 759 | "uri": "qbArm_512_Displacement.jpg" 760 | } 761 | ] 762 | }, 763 | { 764 | "resolution": "256x256", 765 | "formats": [ 766 | { 767 | "mimeType": "image/x-exr", 768 | "contentLength": 253088, 769 | "bitDepth": 32, 770 | "uri": "qbArm_256_Displacement.exr" 771 | }, 772 | { 773 | "mimeType": "image/jpeg", 774 | "contentLength": 23490, 775 | "bitDepth": 8, 776 | "uri": "qbArm_256_Displacement.jpg" 777 | } 778 | ] 779 | } 780 | ] 781 | } 782 | ], 783 | "averageColor": "#808080" 784 | }, 785 | { 786 | "minIntensity": 124, 787 | "name": "Bump", 788 | "colorSpace": "Linear", 789 | "maxIntensity": 133, 790 | "type": "bump", 791 | "uris": [ 792 | { 793 | "physicalSize": "0.3x0.3", 794 | "resolutions": [ 795 | { 796 | "resolution": "4096x4096", 797 | "formats": [ 798 | { 799 | "mimeType": "image/x-exr", 800 | "contentLength": 53299530, 801 | "bitDepth": 32, 802 | "uri": "qbArm_4K_Bump.exr" 803 | }, 804 | { 805 | "mimeType": "image/jpeg", 806 | "contentLength": 2008827, 807 | "bitDepth": 8, 808 | "uri": "qbArm_4K_Bump.jpg" 809 | } 810 | ] 811 | }, 812 | { 813 | "resolution": "2048x2048", 814 | "formats": [ 815 | { 816 | "mimeType": "image/x-exr", 817 | "contentLength": 14723940, 818 | "bitDepth": 32, 819 | "uri": "qbArm_2K_Bump.exr" 820 | }, 821 | { 822 | "mimeType": "image/jpeg", 823 | "contentLength": 669498, 824 | "bitDepth": 8, 825 | "uri": "qbArm_2K_Bump.jpg" 826 | } 827 | ] 828 | }, 829 | { 830 | "resolution": "1024x1024", 831 | "formats": [ 832 | { 833 | "mimeType": "image/x-exr", 834 | "contentLength": 3991594, 835 | "bitDepth": 32, 836 | "uri": "qbArm_1K_Bump.exr" 837 | }, 838 | { 839 | "mimeType": "image/jpeg", 840 | "contentLength": 264157, 841 | "bitDepth": 8, 842 | "uri": "qbArm_1K_Bump.jpg" 843 | } 844 | ] 845 | }, 846 | { 847 | "resolution": "512x512", 848 | "formats": [ 849 | { 850 | "mimeType": "image/x-exr", 851 | "contentLength": 982964, 852 | "bitDepth": 32, 853 | "uri": "qbArm_512_Bump.exr" 854 | }, 855 | { 856 | "mimeType": "image/jpeg", 857 | "contentLength": 76004, 858 | "bitDepth": 8, 859 | "uri": "qbArm_512_Bump.jpg" 860 | } 861 | ] 862 | }, 863 | { 864 | "resolution": "256x256", 865 | "formats": [ 866 | { 867 | "mimeType": "image/x-exr", 868 | "contentLength": 262675, 869 | "bitDepth": 32, 870 | "uri": "qbArm_256_Bump.exr" 871 | }, 872 | { 873 | "mimeType": "image/jpeg", 874 | "contentLength": 24716, 875 | "bitDepth": 8, 876 | "uri": "qbArm_256_Bump.jpg" 877 | } 878 | ] 879 | } 880 | ] 881 | } 882 | ], 883 | "averageColor": "#808080" 884 | }, 885 | { 886 | "minIntensity": 0, 887 | "name": "Gloss", 888 | "colorSpace": "Linear", 889 | "maxIntensity": 35, 890 | "type": "gloss", 891 | "uris": [ 892 | { 893 | "physicalSize": "0.3x0.3", 894 | "resolutions": [ 895 | { 896 | "resolution": "4096x4096", 897 | "formats": [ 898 | { 899 | "mimeType": "image/x-exr", 900 | "contentLength": 67108897, 901 | "bitDepth": 32, 902 | "uri": "qbArm_4K_Gloss.exr" 903 | }, 904 | { 905 | "mimeType": "image/jpeg", 906 | "contentLength": 6844533, 907 | "bitDepth": 8, 908 | "uri": "qbArm_4K_Gloss.jpg" 909 | } 910 | ] 911 | }, 912 | { 913 | "resolution": "2048x2048", 914 | "formats": [ 915 | { 916 | "mimeType": "image/x-exr", 917 | "contentLength": 16778643, 918 | "bitDepth": 32, 919 | "uri": "qbArm_2K_Gloss.exr" 920 | }, 921 | { 922 | "mimeType": "image/jpeg", 923 | "contentLength": 1988242, 924 | "bitDepth": 8, 925 | "uri": "qbArm_2K_Gloss.jpg" 926 | } 927 | ] 928 | }, 929 | { 930 | "resolution": "1024x1024", 931 | "formats": [ 932 | { 933 | "mimeType": "image/x-exr", 934 | "contentLength": 4195219, 935 | "bitDepth": 32, 936 | "uri": "qbArm_1K_Gloss.exr" 937 | }, 938 | { 939 | "mimeType": "image/jpeg", 940 | "contentLength": 566210, 941 | "bitDepth": 8, 942 | "uri": "qbArm_1K_Gloss.jpg" 943 | } 944 | ] 945 | }, 946 | { 947 | "resolution": "512x512", 948 | "formats": [ 949 | { 950 | "mimeType": "image/x-exr", 951 | "contentLength": 1049235, 952 | "bitDepth": 32, 953 | "uri": "qbArm_512_Gloss.exr" 954 | }, 955 | { 956 | "mimeType": "image/jpeg", 957 | "contentLength": 150201, 958 | "bitDepth": 8, 959 | "uri": "qbArm_512_Gloss.jpg" 960 | } 961 | ] 962 | }, 963 | { 964 | "resolution": "256x256", 965 | "formats": [ 966 | { 967 | "mimeType": "image/x-exr", 968 | "contentLength": 262675, 969 | "bitDepth": 32, 970 | "uri": "qbArm_256_Gloss.exr" 971 | }, 972 | { 973 | "mimeType": "image/jpeg", 974 | "contentLength": 55675, 975 | "bitDepth": 8, 976 | "uri": "qbArm_256_Gloss.jpg" 977 | } 978 | ] 979 | } 980 | ] 981 | } 982 | ], 983 | "averageColor": "#0B0B0B" 984 | }, 985 | { 986 | "minIntensity": 134, 987 | "name": "Normal", 988 | "colorSpace": "Linear", 989 | "maxIntensity": 148, 990 | "type": "normal", 991 | "uris": [ 992 | { 993 | "physicalSize": "0.3x0.3", 994 | "resolutions": [ 995 | { 996 | "resolution": "4096x4096", 997 | "formats": [ 998 | { 999 | "mimeType": "image/x-exr", 1000 | "contentLength": 41094251, 1001 | "bitDepth": 16, 1002 | "uri": "qbArm_4K_Normal.exr" 1003 | }, 1004 | { 1005 | "mimeType": "image/jpeg", 1006 | "contentLength": 3771082, 1007 | "bitDepth": 8, 1008 | "uri": "qbArm_4K_Normal.jpg" 1009 | } 1010 | ] 1011 | }, 1012 | { 1013 | "resolution": "2048x2048", 1014 | "formats": [ 1015 | { 1016 | "mimeType": "image/x-exr", 1017 | "contentLength": 11592708, 1018 | "bitDepth": 16, 1019 | "uri": "qbArm_2K_Normal.exr" 1020 | }, 1021 | { 1022 | "mimeType": "image/jpeg", 1023 | "contentLength": 1382029, 1024 | "bitDepth": 8, 1025 | "uri": "qbArm_2K_Normal.jpg" 1026 | } 1027 | ] 1028 | }, 1029 | { 1030 | "resolution": "1024x1024", 1031 | "formats": [ 1032 | { 1033 | "mimeType": "image/x-exr", 1034 | "contentLength": 2992927, 1035 | "bitDepth": 16, 1036 | "uri": "qbArm_1K_Normal.exr" 1037 | }, 1038 | { 1039 | "mimeType": "image/jpeg", 1040 | "contentLength": 463307, 1041 | "bitDepth": 8, 1042 | "uri": "qbArm_1K_Normal.jpg" 1043 | } 1044 | ] 1045 | }, 1046 | { 1047 | "resolution": "512x512", 1048 | "formats": [ 1049 | { 1050 | "mimeType": "image/x-exr", 1051 | "contentLength": 735111, 1052 | "bitDepth": 16, 1053 | "uri": "qbArm_512_Normal.exr" 1054 | }, 1055 | { 1056 | "mimeType": "image/jpeg", 1057 | "contentLength": 114200, 1058 | "bitDepth": 8, 1059 | "uri": "qbArm_512_Normal.jpg" 1060 | } 1061 | ] 1062 | }, 1063 | { 1064 | "resolution": "256x256", 1065 | "formats": [ 1066 | { 1067 | "mimeType": "image/x-exr", 1068 | "contentLength": 177509, 1069 | "bitDepth": 16, 1070 | "uri": "qbArm_256_Normal.exr" 1071 | }, 1072 | { 1073 | "mimeType": "image/jpeg", 1074 | "contentLength": 38011, 1075 | "bitDepth": 8, 1076 | "uri": "qbArm_256_Normal.jpg" 1077 | } 1078 | ] 1079 | } 1080 | ] 1081 | } 1082 | ], 1083 | "averageColor": "#7F7FFE" 1084 | }, 1085 | { 1086 | "minIntensity": 216, 1087 | "name": "Roughness", 1088 | "colorSpace": "Linear", 1089 | "maxIntensity": 255, 1090 | "type": "roughness", 1091 | "uris": [ 1092 | { 1093 | "physicalSize": "0.3x0.3", 1094 | "resolutions": [ 1095 | { 1096 | "resolution": "4096x4096", 1097 | "formats": [ 1098 | { 1099 | "mimeType": "image/x-exr", 1100 | "contentLength": 58845874, 1101 | "bitDepth": 32, 1102 | "uri": "qbArm_4K_Roughness.exr" 1103 | }, 1104 | { 1105 | "mimeType": "image/jpeg", 1106 | "contentLength": 6894164, 1107 | "bitDepth": 8, 1108 | "uri": "qbArm_4K_Roughness.jpg" 1109 | } 1110 | ] 1111 | }, 1112 | { 1113 | "resolution": "2048x2048", 1114 | "formats": [ 1115 | { 1116 | "mimeType": "image/x-exr", 1117 | "contentLength": 16013937, 1118 | "bitDepth": 32, 1119 | "uri": "qbArm_2K_Roughness.exr" 1120 | }, 1121 | { 1122 | "mimeType": "image/jpeg", 1123 | "contentLength": 1992816, 1124 | "bitDepth": 8, 1125 | "uri": "qbArm_2K_Roughness.jpg" 1126 | } 1127 | ] 1128 | }, 1129 | { 1130 | "resolution": "1024x1024", 1131 | "formats": [ 1132 | { 1133 | "mimeType": "image/x-exr", 1134 | "contentLength": 4194772, 1135 | "bitDepth": 32, 1136 | "uri": "qbArm_1K_Roughness.exr" 1137 | }, 1138 | { 1139 | "mimeType": "image/jpeg", 1140 | "contentLength": 568210, 1141 | "bitDepth": 8, 1142 | "uri": "qbArm_1K_Roughness.jpg" 1143 | } 1144 | ] 1145 | }, 1146 | { 1147 | "resolution": "512x512", 1148 | "formats": [ 1149 | { 1150 | "mimeType": "image/x-exr", 1151 | "contentLength": 1031266, 1152 | "bitDepth": 32, 1153 | "uri": "qbArm_512_Roughness.exr" 1154 | }, 1155 | { 1156 | "mimeType": "image/jpeg", 1157 | "contentLength": 150978, 1158 | "bitDepth": 8, 1159 | "uri": "qbArm_512_Roughness.jpg" 1160 | } 1161 | ] 1162 | }, 1163 | { 1164 | "resolution": "256x256", 1165 | "formats": [ 1166 | { 1167 | "mimeType": "image/x-exr", 1168 | "contentLength": 262675, 1169 | "bitDepth": 32, 1170 | "uri": "qbArm_256_Roughness.exr" 1171 | }, 1172 | { 1173 | "mimeType": "image/jpeg", 1174 | "contentLength": 56039, 1175 | "bitDepth": 8, 1176 | "uri": "qbArm_256_Roughness.jpg" 1177 | } 1178 | ] 1179 | } 1180 | ] 1181 | } 1182 | ], 1183 | "averageColor": "#EEEEEE" 1184 | }, 1185 | { 1186 | "minIntensity": 53, 1187 | "name": "Specular", 1188 | "colorSpace": "sRGB", 1189 | "maxIntensity": 53, 1190 | "type": "specular", 1191 | "uris": [ 1192 | { 1193 | "physicalSize": "0.3x0.3", 1194 | "resolutions": [ 1195 | { 1196 | "resolution": "4096x4096", 1197 | "formats": [ 1198 | { 1199 | "mimeType": "image/x-exr", 1200 | "contentLength": 609692, 1201 | "bitDepth": 16, 1202 | "uri": "qbArm_4K_Specular.exr" 1203 | }, 1204 | { 1205 | "mimeType": "image/jpeg", 1206 | "contentLength": 217683, 1207 | "bitDepth": 8, 1208 | "uri": "qbArm_4K_Specular.jpg" 1209 | } 1210 | ] 1211 | }, 1212 | { 1213 | "resolution": "2048x2048", 1214 | "formats": [ 1215 | { 1216 | "mimeType": "image/x-exr", 1217 | "contentLength": 1796764, 1218 | "bitDepth": 16, 1219 | "uri": "qbArm_2K_Specular.exr" 1220 | }, 1221 | { 1222 | "mimeType": "image/jpeg", 1223 | "contentLength": 69049, 1224 | "bitDepth": 8, 1225 | "uri": "qbArm_2K_Specular.jpg" 1226 | } 1227 | ] 1228 | }, 1229 | { 1230 | "resolution": "1024x1024", 1231 | "formats": [ 1232 | { 1233 | "mimeType": "image/x-exr", 1234 | "contentLength": 65371, 1235 | "bitDepth": 16, 1236 | "uri": "qbArm_1K_Specular.exr" 1237 | }, 1238 | { 1239 | "mimeType": "image/jpeg", 1240 | "contentLength": 31509, 1241 | "bitDepth": 8, 1242 | "uri": "qbArm_1K_Specular.jpg" 1243 | } 1244 | ] 1245 | }, 1246 | { 1247 | "resolution": "512x512", 1248 | "formats": [ 1249 | { 1250 | "mimeType": "image/x-exr", 1251 | "contentLength": 26182, 1252 | "bitDepth": 16, 1253 | "uri": "qbArm_512_Specular.exr" 1254 | }, 1255 | { 1256 | "mimeType": "image/jpeg", 1257 | "contentLength": 21975, 1258 | "bitDepth": 8, 1259 | "uri": "qbArm_512_Specular.jpg" 1260 | } 1261 | ] 1262 | }, 1263 | { 1264 | "resolution": "256x256", 1265 | "formats": [ 1266 | { 1267 | "mimeType": "image/x-exr", 1268 | "contentLength": 11160, 1269 | "bitDepth": 16, 1270 | "uri": "qbArm_256_Specular.exr" 1271 | }, 1272 | { 1273 | "mimeType": "image/jpeg", 1274 | "contentLength": 19537, 1275 | "bitDepth": 8, 1276 | "uri": "qbArm_256_Specular.jpg" 1277 | } 1278 | ] 1279 | } 1280 | ] 1281 | } 1282 | ], 1283 | "averageColor": "#353535" 1284 | } 1285 | ], 1286 | "properties": [], 1287 | "categories": [ 1288 | "surface", 1289 | "ground", 1290 | "snow" 1291 | ], 1292 | "points": 1, 1293 | "id": "qbArm0", 1294 | "physicalSize": "0.3x0.3", 1295 | "pack": null 1296 | } -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm0.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 315434383cf398445977c78f4c529840 3 | timeCreated: 1520053138 4 | licenseType: Pro 5 | TextScriptImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_AO.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_AO.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_AO.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9dcc6ad599ce2eb44ade99664d9c02f6 3 | timeCreated: 1520053137 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Albedo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Albedo.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Albedo.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d282b3f03771db48a38da75ed8e284f 3 | timeCreated: 1520053132 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Bump.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Bump.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Bump.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4989e252ca6389f47b1756ad9a22bf2a 3 | timeCreated: 1520053131 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Cavity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Cavity.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Cavity.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 544640060c111ca4b9d89b2a05349a61 3 | timeCreated: 1520053132 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Displacement.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Displacement.exr -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Displacement.exr.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a0fc63bd0b7b6d45ac63ea0b023ab7d 3 | timeCreated: 1520053129 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Displacement.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Displacement.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Displacement.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b6a250f25cd67cb409eed119b926d7a5 3 | timeCreated: 1520053137 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Normal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Normal.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Normal.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a7ffc96695325e4ab5f32d3f9f43bc1 3 | timeCreated: 1520053135 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 0 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 1 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Roughness.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxwellGengYF/Unity-Collapsible-Ground/f09fbc8e90bb947a3686df293273949cf01728d0/Assets/Snow/Snow1/qbArm_2K_Roughness.jpg -------------------------------------------------------------------------------- /Assets/Snow/Snow1/qbArm_2K_Roughness.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5452bc9aadaee184d893618880e8cdae 3 | timeCreated: 1520053132 4 | licenseType: Pro 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | externalObjects: {} 8 | serializedVersion: 4 9 | mipmaps: 10 | mipMapMode: 0 11 | enableMipMap: 1 12 | sRGBTexture: 1 13 | linearTexture: 0 14 | fadeOut: 0 15 | borderMipMap: 0 16 | mipMapsPreserveCoverage: 0 17 | alphaTestReferenceValue: 0.5 18 | mipMapFadeDistanceStart: 1 19 | mipMapFadeDistanceEnd: 3 20 | bumpmap: 21 | convertToNormalMap: 0 22 | externalNormalMap: 0 23 | heightScale: 0.25 24 | normalMapFilter: 0 25 | isReadable: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -1 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 49 | spritePixelsToUnits: 100 50 | alphaUsage: 1 51 | alphaIsTransparency: 0 52 | spriteTessellationDetail: -1 53 | textureType: 0 54 | textureShape: 1 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - buildTarget: DefaultTexturePlatform 60 | maxTextureSize: 2048 61 | resizeAlgorithm: 0 62 | textureFormat: -1 63 | textureCompression: 1 64 | compressionQuality: 50 65 | crunchedCompression: 0 66 | allowsAlphaSplitting: 0 67 | overridden: 0 68 | androidETC2FallbackOverride: 0 69 | spriteSheet: 70 | serializedVersion: 2 71 | sprites: [] 72 | outline: [] 73 | physicsShape: [] 74 | spritePackingTag: 75 | userData: 76 | assetBundleName: 77 | assetBundleVariant: 78 | -------------------------------------------------------------------------------- /Assets/Snow/TestMaterial.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: TestMaterial 10 | m_Shader: {fileID: 4800000, guid: fca308670a4ff9f408d5562a27f658c1, type: 3} 11 | m_ShaderKeywords: USE_ALBEDO USE_NORMAL USE_OCCLUSION USE_PHONG USE_SPECULAR 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 2800000, guid: 7a7ffc96695325e4ab5f32d3f9f43bc1, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedo: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailAlbedoMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailBump: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 2800000, guid: 4d282b3f03771db48a38da75ed8e284f, type: 3} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 2800000, guid: 9dcc6ad599ce2eb44ade99664d9c02f6, type: 3} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _ParallaxMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _SpecularMap: 66 | m_Texture: {fileID: 2800000, guid: 209baafa438e532478179cb9acb55635, type: 3} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | m_Floats: 70 | - _AlbedoBlend: 0.3 71 | - _BumpBlend: 0.3 72 | - _BumpScale: 1 73 | - _Cutoff: 0.5 74 | - _DetailNormalMapScale: 1 75 | - _DstBlend: 0 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0.5 78 | - _GlossyReflections: 1 79 | - _MaxDist: 100 80 | - _Metallic: 0 81 | - _MinDist: 100 82 | - _Mode: 0 83 | - _NormalScale: 1 84 | - _Occlusion: 1 85 | - _OcclusionStrength: 1 86 | - _Parallax: 0.02 87 | - _Phong: 0.5 88 | - _SmoothnessTextureChannel: 0 89 | - _SpecularColor: 0.3 90 | - _SpecularHighlights: 1 91 | - _SrcBlend: 1 92 | - _Tessellation: 63 93 | - _UVSec: 0 94 | - _VertexOffset: 0 95 | - _VertexScale: 1 96 | - _ZWrite: 1 97 | m_Colors: 98 | - _Color: {r: 1, g: 1, b: 1, a: 1} 99 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 100 | -------------------------------------------------------------------------------- /Assets/Snow/TestMaterial.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a238e52bd7da454581d2cd70a12bd66 3 | timeCreated: 1521670412 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | externalObjects: {} 7 | mainObjectFileID: 2100000 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/demo.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0, g: 0, b: 0, a: 1} 24 | m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 25 | m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 2100000, guid: 00d0d51943bb05044b855f8478302087, type: 2} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 2048 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 0.57 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &4 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_TemporalCoherenceThreshold: 1 54 | m_EnvironmentLightingMode: 0 55 | m_EnableBakedLightmaps: 1 56 | m_EnableRealtimeLightmaps: 0 57 | m_LightmapEditorSettings: 58 | serializedVersion: 10 59 | m_Resolution: 2 60 | m_BakeResolution: 40 61 | m_AtlasSize: 4096 62 | m_AO: 1 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 8 67 | m_LightmapParameters: {fileID: 15200, guid: 0000000000000000f000000000000000, 68 | type: 0} 69 | m_LightmapsBakeMode: 1 70 | m_TextureCompression: 0 71 | m_FinalGather: 1 72 | m_FinalGatherFiltering: 1 73 | m_FinalGatherRayCount: 256 74 | m_ReflectionCompression: 2 75 | m_MixedBakeMode: 2 76 | m_BakeBackend: 0 77 | m_PVRSampling: 1 78 | m_PVRDirectSampleCount: 32 79 | m_PVRSampleCount: 500 80 | m_PVRBounces: 2 81 | m_PVRFilterTypeDirect: 0 82 | m_PVRFilterTypeIndirect: 0 83 | m_PVRFilterTypeAO: 0 84 | m_PVRFilteringMode: 0 85 | m_PVRCulling: 1 86 | m_PVRFilteringGaussRadiusDirect: 1 87 | m_PVRFilteringGaussRadiusIndirect: 5 88 | m_PVRFilteringGaussRadiusAO: 2 89 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 90 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 91 | m_PVRFilteringAtrousPositionSigmaAO: 1 92 | m_ShowResolutionOverlay: 1 93 | m_LightingDataAsset: {fileID: 112000002, guid: 53327be2196c13148a2bc7db8974ab26, 94 | type: 2} 95 | m_UseShadowmask: 1 96 | --- !u!196 &5 97 | NavMeshSettings: 98 | serializedVersion: 2 99 | m_ObjectHideFlags: 0 100 | m_BuildSettings: 101 | serializedVersion: 2 102 | agentTypeID: 0 103 | agentRadius: 0.5 104 | agentHeight: 2 105 | agentSlope: 45 106 | agentClimb: 0.4 107 | ledgeDropHeight: 0 108 | maxJumpAcrossDistance: 0 109 | minRegionArea: 2 110 | manualCellSize: 0 111 | cellSize: 0.16666666 112 | manualTileSize: 0 113 | tileSize: 256 114 | accuratePlacement: 0 115 | debug: 116 | m_Flags: 0 117 | m_NavMeshData: {fileID: 23800000, guid: b4cc0519bd961c347857dce9890a21b5, type: 2} 118 | --- !u!1 &158961288 119 | GameObject: 120 | m_ObjectHideFlags: 0 121 | m_PrefabParentObject: {fileID: 0} 122 | m_PrefabInternal: {fileID: 0} 123 | serializedVersion: 5 124 | m_Component: 125 | - component: {fileID: 158961290} 126 | - component: {fileID: 158961289} 127 | m_Layer: 0 128 | m_Name: Directional light 129 | m_TagString: Untagged 130 | m_Icon: {fileID: 0} 131 | m_NavMeshLayer: 0 132 | m_StaticEditorFlags: 0 133 | m_IsActive: 1 134 | --- !u!108 &158961289 135 | Light: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 158961288} 140 | m_Enabled: 1 141 | serializedVersion: 8 142 | m_Type: 1 143 | m_Color: {r: 1, g: 1, b: 1, a: 1} 144 | m_Intensity: 1 145 | m_Range: 10 146 | m_SpotAngle: 30 147 | m_CookieSize: 10 148 | m_Shadows: 149 | m_Type: 2 150 | m_Resolution: -1 151 | m_CustomResolution: -1 152 | m_Strength: 1 153 | m_Bias: 0.05 154 | m_NormalBias: 0.4 155 | m_NearPlane: 0.2 156 | m_Cookie: {fileID: 0} 157 | m_DrawHalo: 0 158 | m_Flare: {fileID: 0} 159 | m_RenderMode: 0 160 | m_CullingMask: 161 | serializedVersion: 2 162 | m_Bits: 4294967295 163 | m_Lightmapping: 4 164 | m_AreaSize: {x: 1, y: 1} 165 | m_BounceIntensity: 1 166 | m_ColorTemperature: 6570 167 | m_UseColorTemperature: 0 168 | m_ShadowRadius: 0 169 | m_ShadowAngle: 30 170 | --- !u!4 &158961290 171 | Transform: 172 | m_ObjectHideFlags: 0 173 | m_PrefabParentObject: {fileID: 0} 174 | m_PrefabInternal: {fileID: 0} 175 | m_GameObject: {fileID: 158961288} 176 | m_LocalRotation: {x: -0.7392347, y: 0.46908513, z: -0.28922203, w: -0.38709414} 177 | m_LocalPosition: {x: 0, y: 1.498, z: 0} 178 | m_LocalScale: {x: 1, y: 1, z: 1} 179 | m_Children: [] 180 | m_Father: {fileID: 0} 181 | m_RootOrder: 0 182 | m_LocalEulerAnglesHint: {x: 122.47299, y: -6.893982, z: 421.007} 183 | --- !u!1 &594754843 184 | GameObject: 185 | m_ObjectHideFlags: 0 186 | m_PrefabParentObject: {fileID: 0} 187 | m_PrefabInternal: {fileID: 0} 188 | serializedVersion: 5 189 | m_Component: 190 | - component: {fileID: 594754848} 191 | - component: {fileID: 594754847} 192 | - component: {fileID: 594754846} 193 | - component: {fileID: 594754845} 194 | m_Layer: 31 195 | m_Name: Camera 196 | m_TagString: MainCamera 197 | m_Icon: {fileID: 0} 198 | m_NavMeshLayer: 0 199 | m_StaticEditorFlags: 0 200 | m_IsActive: 1 201 | --- !u!81 &594754845 202 | AudioListener: 203 | m_ObjectHideFlags: 0 204 | m_PrefabParentObject: {fileID: 0} 205 | m_PrefabInternal: {fileID: 0} 206 | m_GameObject: {fileID: 594754843} 207 | m_Enabled: 1 208 | --- !u!124 &594754846 209 | Behaviour: 210 | m_ObjectHideFlags: 0 211 | m_PrefabParentObject: {fileID: 0} 212 | m_PrefabInternal: {fileID: 0} 213 | m_GameObject: {fileID: 594754843} 214 | m_Enabled: 1 215 | --- !u!20 &594754847 216 | Camera: 217 | m_ObjectHideFlags: 0 218 | m_PrefabParentObject: {fileID: 0} 219 | m_PrefabInternal: {fileID: 0} 220 | m_GameObject: {fileID: 594754843} 221 | m_Enabled: 1 222 | serializedVersion: 2 223 | m_ClearFlags: 1 224 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} 225 | m_NormalizedViewPortRect: 226 | serializedVersion: 2 227 | x: 0 228 | y: 0 229 | width: 1 230 | height: 1 231 | near clip plane: 0.03 232 | far clip plane: 255.01 233 | field of view: 60 234 | orthographic: 0 235 | orthographic size: 5 236 | m_Depth: 0 237 | m_CullingMask: 238 | serializedVersion: 2 239 | m_Bits: 4294967295 240 | m_RenderingPath: 3 241 | m_TargetTexture: {fileID: 0} 242 | m_TargetDisplay: 0 243 | m_TargetEye: 3 244 | m_HDR: 1 245 | m_AllowMSAA: 0 246 | m_AllowDynamicResolution: 0 247 | m_ForceIntoRT: 1 248 | m_OcclusionCulling: 1 249 | m_StereoConvergence: 10 250 | m_StereoSeparation: 0.022 251 | --- !u!4 &594754848 252 | Transform: 253 | m_ObjectHideFlags: 0 254 | m_PrefabParentObject: {fileID: 0} 255 | m_PrefabInternal: {fileID: 0} 256 | m_GameObject: {fileID: 594754843} 257 | m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} 258 | m_LocalPosition: {x: 0, y: 10.55, z: 0} 259 | m_LocalScale: {x: 1, y: 1, z: 1} 260 | m_Children: [] 261 | m_Father: {fileID: 0} 262 | m_RootOrder: 1 263 | m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} 264 | --- !u!1 &745283573 265 | GameObject: 266 | m_ObjectHideFlags: 0 267 | m_PrefabParentObject: {fileID: 0} 268 | m_PrefabInternal: {fileID: 0} 269 | serializedVersion: 5 270 | m_Component: 271 | - component: {fileID: 745283578} 272 | - component: {fileID: 745283577} 273 | - component: {fileID: 745283576} 274 | - component: {fileID: 745283575} 275 | - component: {fileID: 745283579} 276 | m_Layer: 0 277 | m_Name: Plane 278 | m_TagString: Untagged 279 | m_Icon: {fileID: 0} 280 | m_NavMeshLayer: 0 281 | m_StaticEditorFlags: 4294967295 282 | m_IsActive: 1 283 | --- !u!23 &745283575 284 | MeshRenderer: 285 | m_ObjectHideFlags: 0 286 | m_PrefabParentObject: {fileID: 0} 287 | m_PrefabInternal: {fileID: 0} 288 | m_GameObject: {fileID: 745283573} 289 | m_Enabled: 1 290 | m_CastShadows: 1 291 | m_ReceiveShadows: 1 292 | m_DynamicOccludee: 1 293 | m_MotionVectors: 1 294 | m_LightProbeUsage: 1 295 | m_ReflectionProbeUsage: 1 296 | m_RenderingLayerMask: 4294967295 297 | m_Materials: 298 | - {fileID: 2100000, guid: 9a238e52bd7da454581d2cd70a12bd66, type: 2} 299 | m_StaticBatchInfo: 300 | firstSubMesh: 0 301 | subMeshCount: 0 302 | m_StaticBatchRoot: {fileID: 0} 303 | m_ProbeAnchor: {fileID: 0} 304 | m_LightProbeVolumeOverride: {fileID: 0} 305 | m_ScaleInLightmap: 1 306 | m_PreserveUVs: 1 307 | m_IgnoreNormalsForChartDetection: 0 308 | m_ImportantGI: 0 309 | m_StitchLightmapSeams: 0 310 | m_SelectedEditorRenderState: 3 311 | m_MinimumChartSize: 4 312 | m_AutoUVMaxDistance: 0.5 313 | m_AutoUVMaxAngle: 89 314 | m_LightmapParameters: {fileID: 0} 315 | m_SortingLayerID: 0 316 | m_SortingLayer: 0 317 | m_SortingOrder: 0 318 | --- !u!64 &745283576 319 | MeshCollider: 320 | m_ObjectHideFlags: 0 321 | m_PrefabParentObject: {fileID: 0} 322 | m_PrefabInternal: {fileID: 0} 323 | m_GameObject: {fileID: 745283573} 324 | m_Material: {fileID: 0} 325 | m_IsTrigger: 0 326 | m_Enabled: 1 327 | serializedVersion: 3 328 | m_Convex: 0 329 | m_CookingOptions: 14 330 | m_SkinWidth: 0.01 331 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 332 | --- !u!33 &745283577 333 | MeshFilter: 334 | m_ObjectHideFlags: 0 335 | m_PrefabParentObject: {fileID: 0} 336 | m_PrefabInternal: {fileID: 0} 337 | m_GameObject: {fileID: 745283573} 338 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 339 | --- !u!4 &745283578 340 | Transform: 341 | m_ObjectHideFlags: 0 342 | m_PrefabParentObject: {fileID: 0} 343 | m_PrefabInternal: {fileID: 0} 344 | m_GameObject: {fileID: 745283573} 345 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 346 | m_LocalPosition: {x: 0, y: 0, z: 0} 347 | m_LocalScale: {x: 2, y: 1, z: 1} 348 | m_Children: [] 349 | m_Father: {fileID: 0} 350 | m_RootOrder: 2 351 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 352 | --- !u!114 &745283579 353 | MonoBehaviour: 354 | m_ObjectHideFlags: 0 355 | m_PrefabParentObject: {fileID: 0} 356 | m_PrefabInternal: {fileID: 0} 357 | m_GameObject: {fileID: 745283573} 358 | m_Enabled: 1 359 | m_EditorHideFlags: 0 360 | m_Script: {fileID: 11500000, guid: eaa743eb0e71f554f8b11c4d61d5003a, type: 3} 361 | m_Name: 362 | m_EditorClassIdentifier: 363 | size: {x: 20, y: 10} 364 | resolution: 1024 365 | planeHeight: 1 366 | mask: 367 | serializedVersion: 2 368 | m_Bits: 16 369 | vertexScale: 0 370 | vertexOffset: 0 371 | heightMap: {fileID: 2800000, guid: 9eb833289b50fa14a807eae4423f8690, type: 3} 372 | --- !u!1 &2031863223 373 | GameObject: 374 | m_ObjectHideFlags: 0 375 | m_PrefabParentObject: {fileID: 0} 376 | m_PrefabInternal: {fileID: 0} 377 | serializedVersion: 5 378 | m_Component: 379 | - component: {fileID: 2031863227} 380 | - component: {fileID: 2031863226} 381 | - component: {fileID: 2031863225} 382 | - component: {fileID: 2031863224} 383 | m_Layer: 4 384 | m_Name: Sphere 385 | m_TagString: Untagged 386 | m_Icon: {fileID: 0} 387 | m_NavMeshLayer: 0 388 | m_StaticEditorFlags: 0 389 | m_IsActive: 1 390 | --- !u!114 &2031863224 391 | MonoBehaviour: 392 | m_ObjectHideFlags: 0 393 | m_PrefabParentObject: {fileID: 0} 394 | m_PrefabInternal: {fileID: 0} 395 | m_GameObject: {fileID: 2031863223} 396 | m_Enabled: 1 397 | m_EditorHideFlags: 0 398 | m_Script: {fileID: 11500000, guid: 3bdeda6d84dd6cb4b8f4c132d1c20c9e, type: 3} 399 | m_Name: 400 | m_EditorClassIdentifier: 401 | --- !u!23 &2031863225 402 | MeshRenderer: 403 | m_ObjectHideFlags: 0 404 | m_PrefabParentObject: {fileID: 0} 405 | m_PrefabInternal: {fileID: 0} 406 | m_GameObject: {fileID: 2031863223} 407 | m_Enabled: 1 408 | m_CastShadows: 1 409 | m_ReceiveShadows: 1 410 | m_DynamicOccludee: 1 411 | m_MotionVectors: 1 412 | m_LightProbeUsage: 1 413 | m_ReflectionProbeUsage: 1 414 | m_RenderingLayerMask: 4294967295 415 | m_Materials: 416 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 417 | m_StaticBatchInfo: 418 | firstSubMesh: 0 419 | subMeshCount: 0 420 | m_StaticBatchRoot: {fileID: 0} 421 | m_ProbeAnchor: {fileID: 0} 422 | m_LightProbeVolumeOverride: {fileID: 0} 423 | m_ScaleInLightmap: 1 424 | m_PreserveUVs: 1 425 | m_IgnoreNormalsForChartDetection: 0 426 | m_ImportantGI: 0 427 | m_StitchLightmapSeams: 0 428 | m_SelectedEditorRenderState: 3 429 | m_MinimumChartSize: 4 430 | m_AutoUVMaxDistance: 0.5 431 | m_AutoUVMaxAngle: 89 432 | m_LightmapParameters: {fileID: 0} 433 | m_SortingLayerID: 0 434 | m_SortingLayer: 0 435 | m_SortingOrder: 0 436 | --- !u!33 &2031863226 437 | MeshFilter: 438 | m_ObjectHideFlags: 0 439 | m_PrefabParentObject: {fileID: 0} 440 | m_PrefabInternal: {fileID: 0} 441 | m_GameObject: {fileID: 2031863223} 442 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 443 | --- !u!4 &2031863227 444 | Transform: 445 | m_ObjectHideFlags: 0 446 | m_PrefabParentObject: {fileID: 0} 447 | m_PrefabInternal: {fileID: 0} 448 | m_GameObject: {fileID: 2031863223} 449 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 450 | m_LocalPosition: {x: -11.73, y: 0.69, z: -2.3920422} 451 | m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} 452 | m_Children: [] 453 | m_Father: {fileID: 0} 454 | m_RootOrder: 3 455 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 456 | -------------------------------------------------------------------------------- /Assets/demo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 51d9dc22780687645a1b66976ca54ffe 3 | timeCreated: 1521670178 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 14 7 | productGUID: 44235fbbfca709141837a84cd1a2b0d8 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | defaultScreenOrientation: 4 11 | targetDevice: 2 12 | useOnDemandResources: 0 13 | accelerometerFrequency: 60 14 | companyName: DefaultCompany 15 | productName: Snow 16 | defaultCursor: {fileID: 0} 17 | cursorHotspot: {x: 0, y: 0} 18 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 19 | m_ShowUnitySplashScreen: 1 20 | m_ShowUnitySplashLogo: 1 21 | m_SplashScreenOverlayOpacity: 1 22 | m_SplashScreenAnimation: 1 23 | m_SplashScreenLogoStyle: 1 24 | m_SplashScreenDrawMode: 0 25 | m_SplashScreenBackgroundAnimationZoom: 1 26 | m_SplashScreenLogoAnimationZoom: 1 27 | m_SplashScreenBackgroundLandscapeAspect: 1 28 | m_SplashScreenBackgroundPortraitAspect: 1 29 | m_SplashScreenBackgroundLandscapeUvs: 30 | serializedVersion: 2 31 | x: 0 32 | y: 0 33 | width: 1 34 | height: 1 35 | m_SplashScreenBackgroundPortraitUvs: 36 | serializedVersion: 2 37 | x: 0 38 | y: 0 39 | width: 1 40 | height: 1 41 | m_SplashScreenLogos: [] 42 | m_VirtualRealitySplashScreen: {fileID: 0} 43 | m_HolographicTrackingLossScreen: {fileID: 0} 44 | defaultScreenWidth: 1024 45 | defaultScreenHeight: 768 46 | defaultScreenWidthWeb: 960 47 | defaultScreenHeightWeb: 600 48 | m_StereoRenderingPath: 0 49 | m_ActiveColorSpace: 1 50 | m_MTRendering: 1 51 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 52 | iosShowActivityIndicatorOnLoading: -1 53 | androidShowActivityIndicatorOnLoading: -1 54 | tizenShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidBlitType: 0 67 | defaultIsFullScreen: 1 68 | defaultIsNativeResolution: 1 69 | macRetinaSupport: 1 70 | runInBackground: 0 71 | captureSingleScreen: 0 72 | muteOtherAudioSources: 0 73 | Prepare IOS For Recording: 0 74 | Force IOS Speakers When Recording: 0 75 | deferSystemGesturesMode: 0 76 | hideHomeButton: 0 77 | submitAnalytics: 0 78 | usePlayerLog: 1 79 | bakeCollisionMeshes: 1 80 | forceSingleInstance: 0 81 | resizableWindow: 0 82 | useMacAppStoreValidation: 0 83 | macAppStoreCategory: public.app-category.games 84 | gpuSkinning: 0 85 | graphicsJobs: 1 86 | xboxPIXTextureCapture: 0 87 | xboxEnableAvatar: 0 88 | xboxEnableKinect: 0 89 | xboxEnableKinectAutoTracking: 0 90 | xboxEnableFitness: 0 91 | visibleInBackground: 1 92 | allowFullscreenSwitch: 1 93 | graphicsJobMode: 0 94 | macFullscreenMode: 2 95 | d3d11FullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | n3dsDisableStereoscopicView: 0 102 | n3dsEnableSharedListOpt: 1 103 | n3dsEnableVSync: 0 104 | xboxOneResolution: 0 105 | xboxOneSResolution: 0 106 | xboxOneXResolution: 3 107 | xboxOneMonoLoggingLevel: 0 108 | xboxOneLoggingLevel: 1 109 | xboxOneDisableEsram: 0 110 | xboxOnePresentImmediateThreshold: 0 111 | videoMemoryForVertexBuffers: 0 112 | psp2PowerMode: 0 113 | psp2AcquireBGM: 1 114 | wiiUTVResolution: 0 115 | wiiUGamePadMSAA: 1 116 | wiiUSupportsNunchuk: 0 117 | wiiUSupportsClassicController: 0 118 | wiiUSupportsBalanceBoard: 0 119 | wiiUSupportsMotionPlus: 0 120 | wiiUSupportsProController: 0 121 | wiiUAllowScreenCapture: 1 122 | wiiUControllerCount: 0 123 | m_SupportedAspectRatios: 124 | 4:3: 1 125 | 5:4: 1 126 | 16:10: 1 127 | 16:9: 1 128 | Others: 1 129 | bundleVersion: 1.0 130 | preloadedAssets: [] 131 | metroInputSource: 0 132 | wsaTransparentSwapchain: 0 133 | m_HolographicPauseOnTrackingLoss: 1 134 | xboxOneDisableKinectGpuReservation: 0 135 | xboxOneEnable7thCore: 0 136 | vrSettings: 137 | cardboard: 138 | depthFormat: 0 139 | enableTransitionView: 0 140 | daydream: 141 | depthFormat: 0 142 | useSustainedPerformanceMode: 0 143 | enableVideoLayer: 0 144 | useProtectedVideoMemory: 0 145 | minimumSupportedHeadTracking: 0 146 | maximumSupportedHeadTracking: 1 147 | hololens: 148 | depthFormat: 1 149 | depthBufferSharingEnabled: 0 150 | oculus: 151 | sharedDepthBuffer: 0 152 | dashSupport: 0 153 | protectGraphicsMemory: 0 154 | useHDRDisplay: 0 155 | m_ColorGamuts: 00000000 156 | targetPixelDensity: 30 157 | resolutionScalingMode: 0 158 | androidSupportedAspectRatio: 1 159 | androidMaxAspectRatio: 2.1 160 | applicationIdentifier: {} 161 | buildNumber: {} 162 | AndroidBundleVersionCode: 1 163 | AndroidMinSdkVersion: 16 164 | AndroidTargetSdkVersion: 0 165 | AndroidPreferredInstallLocation: 1 166 | aotOptions: 167 | stripEngineCode: 1 168 | iPhoneStrippingLevel: 0 169 | iPhoneScriptCallOptimization: 0 170 | ForceInternetPermission: 0 171 | ForceSDCardPermission: 0 172 | CreateWallpaper: 0 173 | APKExpansionFiles: 0 174 | keepLoadedShadersAlive: 1 175 | StripUnusedMeshComponents: 1 176 | VertexChannelCompressionMask: 177 | serializedVersion: 2 178 | m_Bits: 238 179 | iPhoneSdkVersion: 988 180 | iOSTargetOSVersionString: 7.0 181 | tvOSSdkVersion: 0 182 | tvOSRequireExtendedGameController: 0 183 | tvOSTargetOSVersionString: 9.0 184 | uIPrerenderedIcon: 0 185 | uIRequiresPersistentWiFi: 0 186 | uIRequiresFullScreen: 1 187 | uIStatusBarHidden: 1 188 | uIExitOnSuspend: 0 189 | uIStatusBarStyle: 0 190 | iPhoneSplashScreen: {fileID: 0} 191 | iPhoneHighResSplashScreen: {fileID: 0} 192 | iPhoneTallHighResSplashScreen: {fileID: 0} 193 | iPhone47inSplashScreen: {fileID: 0} 194 | iPhone55inPortraitSplashScreen: {fileID: 0} 195 | iPhone55inLandscapeSplashScreen: {fileID: 0} 196 | iPhone58inPortraitSplashScreen: {fileID: 0} 197 | iPhone58inLandscapeSplashScreen: {fileID: 0} 198 | iPadPortraitSplashScreen: {fileID: 0} 199 | iPadHighResPortraitSplashScreen: {fileID: 0} 200 | iPadLandscapeSplashScreen: {fileID: 0} 201 | iPadHighResLandscapeSplashScreen: {fileID: 0} 202 | appleTVSplashScreen: {fileID: 0} 203 | appleTVSplashScreen2x: {fileID: 0} 204 | tvOSSmallIconLayers: [] 205 | tvOSSmallIconLayers2x: [] 206 | tvOSLargeIconLayers: [] 207 | tvOSTopShelfImageLayers: [] 208 | tvOSTopShelfImageLayers2x: [] 209 | tvOSTopShelfImageWideLayers: [] 210 | tvOSTopShelfImageWideLayers2x: [] 211 | iOSLaunchScreenType: 0 212 | iOSLaunchScreenPortrait: {fileID: 0} 213 | iOSLaunchScreenLandscape: {fileID: 0} 214 | iOSLaunchScreenBackgroundColor: 215 | serializedVersion: 2 216 | rgba: 0 217 | iOSLaunchScreenFillPct: 100 218 | iOSLaunchScreenSize: 100 219 | iOSLaunchScreenCustomXibPath: 220 | iOSLaunchScreeniPadType: 0 221 | iOSLaunchScreeniPadImage: {fileID: 0} 222 | iOSLaunchScreeniPadBackgroundColor: 223 | serializedVersion: 2 224 | rgba: 0 225 | iOSLaunchScreeniPadFillPct: 100 226 | iOSLaunchScreeniPadSize: 100 227 | iOSLaunchScreeniPadCustomXibPath: 228 | iOSUseLaunchScreenStoryboard: 0 229 | iOSLaunchScreenCustomStoryboardPath: 230 | iOSDeviceRequirements: [] 231 | iOSURLSchemes: [] 232 | iOSBackgroundModes: 0 233 | iOSMetalForceHardShadows: 0 234 | metalEditorSupport: 1 235 | metalAPIValidation: 1 236 | iOSRenderExtraFrameOnPause: 0 237 | appleDeveloperTeamID: 238 | iOSManualSigningProvisioningProfileID: 239 | tvOSManualSigningProvisioningProfileID: 240 | appleEnableAutomaticSigning: 0 241 | clonedFromGUID: 00000000000000000000000000000000 242 | AndroidTargetDevice: 0 243 | AndroidSplashScreenScale: 0 244 | androidSplashScreen: {fileID: 0} 245 | AndroidKeystoreName: 246 | AndroidKeyaliasName: 247 | AndroidTVCompatibility: 1 248 | AndroidIsGame: 1 249 | AndroidEnableTango: 0 250 | androidEnableBanner: 1 251 | androidUseLowAccuracyLocation: 0 252 | m_AndroidBanners: 253 | - width: 320 254 | height: 180 255 | banner: {fileID: 0} 256 | androidGamepadSupportLevel: 0 257 | resolutionDialogBanner: {fileID: 0} 258 | m_BuildTargetIcons: [] 259 | m_BuildTargetBatching: [] 260 | m_BuildTargetGraphicsAPIs: [] 261 | m_BuildTargetVRSettings: [] 262 | m_BuildTargetEnableVuforiaSettings: [] 263 | openGLRequireES31: 0 264 | openGLRequireES31AEP: 0 265 | m_TemplateCustomTags: {} 266 | mobileMTRendering: 267 | Android: 1 268 | iPhone: 1 269 | tvOS: 1 270 | m_BuildTargetGroupLightmapEncodingQuality: [] 271 | wiiUTitleID: 0005000011000000 272 | wiiUGroupID: 00010000 273 | wiiUCommonSaveSize: 4096 274 | wiiUAccountSaveSize: 2048 275 | wiiUOlvAccessKey: 0 276 | wiiUTinCode: 0 277 | wiiUJoinGameId: 0 278 | wiiUJoinGameModeMask: 0000000000000000 279 | wiiUCommonBossSize: 0 280 | wiiUAccountBossSize: 0 281 | wiiUAddOnUniqueIDs: [] 282 | wiiUMainThreadStackSize: 3072 283 | wiiULoaderThreadStackSize: 1024 284 | wiiUSystemHeapSize: 128 285 | wiiUTVStartupScreen: {fileID: 0} 286 | wiiUGamePadStartupScreen: {fileID: 0} 287 | wiiUDrcBufferDisabled: 0 288 | wiiUProfilerLibPath: 289 | playModeTestRunnerEnabled: 0 290 | actionOnDotNetUnhandledException: 1 291 | enableInternalProfiler: 0 292 | logObjCUncaughtExceptions: 1 293 | enableCrashReportAPI: 0 294 | cameraUsageDescription: 295 | locationUsageDescription: 296 | microphoneUsageDescription: 297 | switchNetLibKey: 298 | switchSocketMemoryPoolSize: 6144 299 | switchSocketAllocatorPoolSize: 128 300 | switchSocketConcurrencyLimit: 14 301 | switchScreenResolutionBehavior: 2 302 | switchUseCPUProfiler: 0 303 | switchApplicationID: 0x01004b9000490000 304 | switchNSODependencies: 305 | switchTitleNames_0: 306 | switchTitleNames_1: 307 | switchTitleNames_2: 308 | switchTitleNames_3: 309 | switchTitleNames_4: 310 | switchTitleNames_5: 311 | switchTitleNames_6: 312 | switchTitleNames_7: 313 | switchTitleNames_8: 314 | switchTitleNames_9: 315 | switchTitleNames_10: 316 | switchTitleNames_11: 317 | switchTitleNames_12: 318 | switchTitleNames_13: 319 | switchTitleNames_14: 320 | switchPublisherNames_0: 321 | switchPublisherNames_1: 322 | switchPublisherNames_2: 323 | switchPublisherNames_3: 324 | switchPublisherNames_4: 325 | switchPublisherNames_5: 326 | switchPublisherNames_6: 327 | switchPublisherNames_7: 328 | switchPublisherNames_8: 329 | switchPublisherNames_9: 330 | switchPublisherNames_10: 331 | switchPublisherNames_11: 332 | switchPublisherNames_12: 333 | switchPublisherNames_13: 334 | switchPublisherNames_14: 335 | switchIcons_0: {fileID: 0} 336 | switchIcons_1: {fileID: 0} 337 | switchIcons_2: {fileID: 0} 338 | switchIcons_3: {fileID: 0} 339 | switchIcons_4: {fileID: 0} 340 | switchIcons_5: {fileID: 0} 341 | switchIcons_6: {fileID: 0} 342 | switchIcons_7: {fileID: 0} 343 | switchIcons_8: {fileID: 0} 344 | switchIcons_9: {fileID: 0} 345 | switchIcons_10: {fileID: 0} 346 | switchIcons_11: {fileID: 0} 347 | switchIcons_12: {fileID: 0} 348 | switchIcons_13: {fileID: 0} 349 | switchIcons_14: {fileID: 0} 350 | switchSmallIcons_0: {fileID: 0} 351 | switchSmallIcons_1: {fileID: 0} 352 | switchSmallIcons_2: {fileID: 0} 353 | switchSmallIcons_3: {fileID: 0} 354 | switchSmallIcons_4: {fileID: 0} 355 | switchSmallIcons_5: {fileID: 0} 356 | switchSmallIcons_6: {fileID: 0} 357 | switchSmallIcons_7: {fileID: 0} 358 | switchSmallIcons_8: {fileID: 0} 359 | switchSmallIcons_9: {fileID: 0} 360 | switchSmallIcons_10: {fileID: 0} 361 | switchSmallIcons_11: {fileID: 0} 362 | switchSmallIcons_12: {fileID: 0} 363 | switchSmallIcons_13: {fileID: 0} 364 | switchSmallIcons_14: {fileID: 0} 365 | switchManualHTML: 366 | switchAccessibleURLs: 367 | switchLegalInformation: 368 | switchMainThreadStackSize: 1048576 369 | switchPresenceGroupId: 370 | switchLogoHandling: 0 371 | switchReleaseVersion: 0 372 | switchDisplayVersion: 1.0.0 373 | switchStartupUserAccount: 0 374 | switchTouchScreenUsage: 0 375 | switchSupportedLanguagesMask: 0 376 | switchLogoType: 0 377 | switchApplicationErrorCodeCategory: 378 | switchUserAccountSaveDataSize: 0 379 | switchUserAccountSaveDataJournalSize: 0 380 | switchApplicationAttribute: 0 381 | switchCardSpecSize: -1 382 | switchCardSpecClock: -1 383 | switchRatingsMask: 0 384 | switchRatingsInt_0: 0 385 | switchRatingsInt_1: 0 386 | switchRatingsInt_2: 0 387 | switchRatingsInt_3: 0 388 | switchRatingsInt_4: 0 389 | switchRatingsInt_5: 0 390 | switchRatingsInt_6: 0 391 | switchRatingsInt_7: 0 392 | switchRatingsInt_8: 0 393 | switchRatingsInt_9: 0 394 | switchRatingsInt_10: 0 395 | switchRatingsInt_11: 0 396 | switchLocalCommunicationIds_0: 397 | switchLocalCommunicationIds_1: 398 | switchLocalCommunicationIds_2: 399 | switchLocalCommunicationIds_3: 400 | switchLocalCommunicationIds_4: 401 | switchLocalCommunicationIds_5: 402 | switchLocalCommunicationIds_6: 403 | switchLocalCommunicationIds_7: 404 | switchParentalControl: 0 405 | switchAllowsScreenshot: 1 406 | switchAllowsVideoCapturing: 1 407 | switchAllowsRuntimeAddOnContentInstall: 0 408 | switchDataLossConfirmation: 0 409 | switchSupportedNpadStyles: 3 410 | switchSocketConfigEnabled: 0 411 | switchTcpInitialSendBufferSize: 32 412 | switchTcpInitialReceiveBufferSize: 64 413 | switchTcpAutoSendBufferSizeMax: 256 414 | switchTcpAutoReceiveBufferSizeMax: 256 415 | switchUdpSendBufferSize: 9 416 | switchUdpReceiveBufferSize: 42 417 | switchSocketBufferEfficiency: 4 418 | switchSocketInitializeEnabled: 1 419 | switchNetworkInterfaceManagerInitializeEnabled: 1 420 | switchPlayerConnectionEnabled: 1 421 | ps4NPAgeRating: 12 422 | ps4NPTitleSecret: 423 | ps4NPTrophyPackPath: 424 | ps4ParentalLevel: 11 425 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 426 | ps4Category: 0 427 | ps4MasterVersion: 01.00 428 | ps4AppVersion: 01.00 429 | ps4AppType: 0 430 | ps4ParamSfxPath: 431 | ps4VideoOutPixelFormat: 0 432 | ps4VideoOutInitialWidth: 1920 433 | ps4VideoOutBaseModeInitialWidth: 1920 434 | ps4VideoOutReprojectionRate: 60 435 | ps4PronunciationXMLPath: 436 | ps4PronunciationSIGPath: 437 | ps4BackgroundImagePath: 438 | ps4StartupImagePath: 439 | ps4StartupImagesFolder: 440 | ps4IconImagesFolder: 441 | ps4SaveDataImagePath: 442 | ps4SdkOverride: 443 | ps4BGMPath: 444 | ps4ShareFilePath: 445 | ps4ShareOverlayImagePath: 446 | ps4PrivacyGuardImagePath: 447 | ps4NPtitleDatPath: 448 | ps4RemotePlayKeyAssignment: -1 449 | ps4RemotePlayKeyMappingDir: 450 | ps4PlayTogetherPlayerCount: 0 451 | ps4EnterButtonAssignment: 1 452 | ps4ApplicationParam1: 0 453 | ps4ApplicationParam2: 0 454 | ps4ApplicationParam3: 0 455 | ps4ApplicationParam4: 0 456 | ps4DownloadDataSize: 0 457 | ps4GarlicHeapSize: 2048 458 | ps4ProGarlicHeapSize: 2560 459 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 460 | ps4pnSessions: 1 461 | ps4pnPresence: 1 462 | ps4pnFriends: 1 463 | ps4pnGameCustomData: 1 464 | playerPrefsSupport: 0 465 | restrictedAudioUsageRights: 0 466 | ps4UseResolutionFallback: 0 467 | ps4ReprojectionSupport: 0 468 | ps4UseAudio3dBackend: 0 469 | ps4SocialScreenEnabled: 0 470 | ps4ScriptOptimizationLevel: 0 471 | ps4Audio3dVirtualSpeakerCount: 14 472 | ps4attribCpuUsage: 0 473 | ps4PatchPkgPath: 474 | ps4PatchLatestPkgPath: 475 | ps4PatchChangeinfoPath: 476 | ps4PatchDayOne: 0 477 | ps4attribUserManagement: 0 478 | ps4attribMoveSupport: 0 479 | ps4attrib3DSupport: 0 480 | ps4attribShareSupport: 0 481 | ps4attribExclusiveVR: 0 482 | ps4disableAutoHideSplash: 0 483 | ps4videoRecordingFeaturesUsed: 0 484 | ps4contentSearchFeaturesUsed: 0 485 | ps4attribEyeToEyeDistanceSettingVR: 0 486 | ps4IncludedModules: [] 487 | monoEnv: 488 | psp2Splashimage: {fileID: 0} 489 | psp2NPTrophyPackPath: 490 | psp2NPSupportGBMorGJP: 0 491 | psp2NPAgeRating: 12 492 | psp2NPTitleDatPath: 493 | psp2NPCommsID: 494 | psp2NPCommunicationsID: 495 | psp2NPCommsPassphrase: 496 | psp2NPCommsSig: 497 | psp2ParamSfxPath: 498 | psp2ManualPath: 499 | psp2LiveAreaGatePath: 500 | psp2LiveAreaBackroundPath: 501 | psp2LiveAreaPath: 502 | psp2LiveAreaTrialPath: 503 | psp2PatchChangeInfoPath: 504 | psp2PatchOriginalPackage: 505 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 506 | psp2KeystoneFile: 507 | psp2MemoryExpansionMode: 0 508 | psp2DRMType: 0 509 | psp2StorageType: 0 510 | psp2MediaCapacity: 0 511 | psp2DLCConfigPath: 512 | psp2ThumbnailPath: 513 | psp2BackgroundPath: 514 | psp2SoundPath: 515 | psp2TrophyCommId: 516 | psp2TrophyPackagePath: 517 | psp2PackagedResourcesPath: 518 | psp2SaveDataQuota: 10240 519 | psp2ParentalLevel: 1 520 | psp2ShortTitle: Not Set 521 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 522 | psp2Category: 0 523 | psp2MasterVersion: 01.00 524 | psp2AppVersion: 01.00 525 | psp2TVBootMode: 0 526 | psp2EnterButtonAssignment: 2 527 | psp2TVDisableEmu: 0 528 | psp2AllowTwitterDialog: 1 529 | psp2Upgradable: 0 530 | psp2HealthWarning: 0 531 | psp2UseLibLocation: 0 532 | psp2InfoBarOnStartup: 0 533 | psp2InfoBarColor: 0 534 | psp2ScriptOptimizationLevel: 0 535 | psmSplashimage: {fileID: 0} 536 | splashScreenBackgroundSourceLandscape: {fileID: 0} 537 | splashScreenBackgroundSourcePortrait: {fileID: 0} 538 | spritePackerPolicy: 539 | webGLMemorySize: 256 540 | webGLExceptionSupport: 1 541 | webGLNameFilesAsHashes: 0 542 | webGLDataCaching: 0 543 | webGLDebugSymbols: 0 544 | webGLEmscriptenArgs: 545 | webGLModulesDirectory: 546 | webGLTemplate: APPLICATION:Default 547 | webGLAnalyzeBuildSize: 0 548 | webGLUseEmbeddedResources: 0 549 | webGLUseWasm: 0 550 | webGLCompressionFormat: 1 551 | scriptingDefineSymbols: {} 552 | platformArchitecture: {} 553 | scriptingBackend: {} 554 | incrementalIl2cppBuild: {} 555 | additionalIl2CppArgs: 556 | scriptingRuntimeVersion: 1 557 | apiCompatibilityLevelPerPlatform: {} 558 | m_RenderingPath: 1 559 | m_MobileRenderingPath: 1 560 | metroPackageName: Snow 561 | metroPackageVersion: 562 | metroCertificatePath: 563 | metroCertificatePassword: 564 | metroCertificateSubject: 565 | metroCertificateIssuer: 566 | metroCertificateNotAfter: 0000000000000000 567 | metroApplicationDescription: Snow 568 | wsaImages: {} 569 | metroTileShortName: 570 | metroCommandLineArgsFile: 571 | metroTileShowName: 0 572 | metroMediumTileShowName: 0 573 | metroLargeTileShowName: 0 574 | metroWideTileShowName: 0 575 | metroDefaultTileSize: 1 576 | metroTileForegroundText: 2 577 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 578 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 579 | a: 1} 580 | metroSplashScreenUseBackgroundColor: 0 581 | platformCapabilities: {} 582 | metroFTAName: 583 | metroFTAFileTypes: [] 584 | metroProtocolName: 585 | metroCompilationOverrides: 1 586 | tizenProductDescription: 587 | tizenProductURL: 588 | tizenSigningProfileName: 589 | tizenGPSPermissions: 0 590 | tizenMicrophonePermissions: 0 591 | tizenDeploymentTarget: 592 | tizenDeploymentTargetType: -1 593 | tizenMinOSVersion: 1 594 | n3dsUseExtSaveData: 0 595 | n3dsCompressStaticMem: 1 596 | n3dsExtSaveDataNumber: 0x12345 597 | n3dsStackSize: 131072 598 | n3dsTargetPlatform: 2 599 | n3dsRegion: 7 600 | n3dsMediaSize: 0 601 | n3dsLogoStyle: 3 602 | n3dsTitle: GameName 603 | n3dsProductCode: 604 | n3dsApplicationId: 0xFF3FF 605 | XboxOneProductId: 606 | XboxOneUpdateKey: 607 | XboxOneSandboxId: 608 | XboxOneContentId: 609 | XboxOneTitleId: 610 | XboxOneSCId: 611 | XboxOneGameOsOverridePath: 612 | XboxOnePackagingOverridePath: 613 | XboxOneAppManifestOverridePath: 614 | XboxOnePackageEncryption: 0 615 | XboxOnePackageUpdateGranularity: 2 616 | XboxOneDescription: 617 | XboxOneLanguage: 618 | - enus 619 | XboxOneCapability: [] 620 | XboxOneGameRating: {} 621 | XboxOneIsContentPackage: 0 622 | XboxOneEnableGPUVariability: 0 623 | XboxOneSockets: {} 624 | XboxOneSplashScreen: {fileID: 0} 625 | XboxOneAllowedProductIds: [] 626 | XboxOnePersistentLocalStorageSize: 0 627 | xboxOneScriptCompiler: 0 628 | vrEditorSettings: 629 | daydream: 630 | daydreamIconForeground: {fileID: 0} 631 | daydreamIconBackground: {fileID: 0} 632 | cloudServicesEnabled: {} 633 | facebookSdkVersion: 7.9.4 634 | apiCompatibilityLevel: 2 635 | cloudProjectId: 636 | projectName: 637 | organizationId: 638 | cloudEnabled: 0 639 | enableNativePlatformBackendsForNewInputSystem: 0 640 | disableOldInputManagerSupport: 0 641 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.1.0b12 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 2 136 | antiAliasing: 0 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 3 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 0 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 0 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Standalone: 5 185 | Tizen: 2 186 | WebGL: 3 187 | WiiU: 5 188 | Windows Store Apps: 5 189 | XboxOne: 5 190 | iPhone: 2 191 | tvOS: 2 192 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 0 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Unity-Collapse-Ground: 2 | 3 | Improvements: 4 | 1. Now support Height displacement map for uneven terrain and camera's far clip plane transforming. 5 | 2. Custom Shader GUI for optimizing. --------------------------------------------------------------------------------