├── .gitignore ├── Assets ├── Kernels.meta ├── Kernels │ ├── RayTracer.compute │ ├── RayTracer.compute.meta │ ├── Sampling.cginc │ ├── Sampling.cginc.meta │ ├── Shading.cginc │ ├── Shading.cginc.meta │ ├── Structures.cginc │ └── Structures.cginc.meta ├── Main.unity ├── Main.unity.meta ├── Materials.meta ├── Materials │ ├── BlueDiffuse.mat │ ├── BlueDiffuse.mat.meta │ ├── FullScreenResolveMat.mat │ ├── FullScreenResolveMat.mat.meta │ ├── Glass.mat │ ├── Glass.mat.meta │ ├── GoldMetal.mat │ ├── GoldMetal.mat.meta │ ├── Ground.mat │ ├── Ground.mat.meta │ ├── Light.mat │ ├── Light.mat.meta │ ├── Points.mat │ └── Points.mat.meta ├── RenderTextures.meta ├── RenderTextures │ ├── AccumulatedColorTexture.renderTexture │ ├── AccumulatedColorTexture.renderTexture.meta │ ├── ComputeDebugTexture.renderTexture │ └── ComputeDebugTexture.renderTexture.meta ├── Scripts.meta ├── Scripts │ ├── RayTracedSphere.cs │ ├── RayTracedSphere.cs.meta │ ├── RayTracer.cs │ └── RayTracer.cs.meta ├── Shaders.meta └── Shaders │ ├── FullScreenResolve.shader │ └── FullScreenResolve.shader.meta ├── CONTRIBUTING.md ├── LICENSE ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset ├── README.md └── RayTracingInOneWeekend.CSharp.Editor.csproj /.gitignore: -------------------------------------------------------------------------------- 1 | /Temp/ 2 | /Library/ 3 | /*.CSharp.csproj 4 | /*.sln 5 | /*.v12.suo 6 | -------------------------------------------------------------------------------- /Assets/Kernels.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 358a3a70eda474f4a849863ae407deaf 3 | folderAsset: yes 4 | timeCreated: 1518985015 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Kernels/RayTracer.compute: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #pragma kernel RayTrace 16 | #pragma kernel InitCameraRays 17 | #pragma kernel NormalizeSamples 18 | 19 | // ---------------------------------------------------------------------------------------------- // 20 | // Data Structures, Sampling, and Shading. 21 | // ---------------------------------------------------------------------------------------------- // 22 | 23 | #include "Structures.cginc" 24 | #include "Sampling.cginc" 25 | #include "Shading.cginc" 26 | 27 | // ---------------------------------------------------------------------------------------------- // 28 | // Kernel Inputs & Outputs. 29 | // ---------------------------------------------------------------------------------------------- // 30 | 31 | int _MaxBounces; 32 | 33 | float4x4 _Camera; 34 | float4x4 _CameraI; 35 | float4x4 _Projection; 36 | float4x4 _ProjectionI; 37 | 38 | float _Aperture; 39 | float _FocusDistance; 40 | int _ActiveMaterial; 41 | 42 | Texture2D _AccumulatedImage; 43 | StructuredBuffer _Spheres; 44 | RWStructuredBuffer _Rays; 45 | 46 | // ---------------------------------------------------------------------------------------------- // 47 | // Scene Intersection 48 | // ---------------------------------------------------------------------------------------------- // 49 | 50 | bool HitSpheres(Ray r, float tMin, float tMax, out HitRecord rec) { 51 | rec.t = -1.0; 52 | rec.p = vec3(0,0,0); 53 | rec.normal = vec3(0,0,0); 54 | rec.uv = vec2(0,0); 55 | rec.albedo = vec3(1,0,0); 56 | rec.material = 0; 57 | 58 | HitRecord tempRec; 59 | bool hitAnything = false; 60 | float closestSoFar = tMax; 61 | uint numStructs; 62 | uint stride; 63 | _Spheres.GetDimensions(numStructs, stride); 64 | 65 | // 66 | // GPU NOTE: A long running for-loop is often the wrong/inefficient choice for a compute shader. 67 | // Typically it's better to reformulate the problem in terms of compute threads. 68 | // 69 | for (uint i = 0; i < numStructs; i++) { 70 | if (_Spheres[i].Hit(r, tMin, closestSoFar, tempRec)) { 71 | hitAnything = true; 72 | closestSoFar = tempRec.t; 73 | rec = tempRec; 74 | } 75 | } 76 | 77 | return hitAnything; 78 | } 79 | 80 | // ---------------------------------------------------------------------------------------------- // 81 | // Main Shading Entry Point. 82 | // ---------------------------------------------------------------------------------------------- // 83 | 84 | bool Color(inout Ray r, vec2 uv) { 85 | HitRecord rec; 86 | rec.uv = vec2(0,0); 87 | rec.t = -1.0; 88 | rec.p = vec3(0,0,0); 89 | rec.normal = vec3(1,0,0); 90 | rec.albedo = vec3(1,0,0); 91 | rec.material = 0; 92 | 93 | r.bounces++; 94 | 95 | if (HitSpheres(r, 0.001, FLT_MAX, rec)) { 96 | rec.uv = uv; 97 | Ray scattered = r; 98 | vec3 attenuation = vec3(0,0,0); 99 | 100 | // Performance note: Here the cost of all shading functions is paid for every ray. We can reduce 101 | // divergence and improve utilization by shading after tracing rays, though as with traditional 102 | // deferred shading, doing so will require more memory and bandwidth. 103 | 104 | if (ScatterLambertian(r, rec, attenuation, scattered) 105 | || ScatterMetal(r, rec, attenuation, scattered) 106 | || ScatterDielectric(r, rec, attenuation, scattered)) { 107 | scattered.color = r.color * attenuation; 108 | r = scattered; 109 | return true; 110 | } else { 111 | return false; 112 | } 113 | } else { 114 | r.color *= EnvColor(r, uv); 115 | return false; 116 | } 117 | } 118 | 119 | // ---------------------------------------------------------------------------------------------- // 120 | // Get Next Ray 121 | // 122 | // Increment the counter built into the _Rays buffer to select the next ray. The rayIndex dictates 123 | // the location in the _Rays buffer, as well as the location in screen space. Rays are supersampled 124 | // in parallel and the array layout is shown in the diagram below. 125 | // 126 | // _Rays array layout for a 3x2 image with 3x super sampling: 127 | // 128 | // *--*--*--* *--*--*--* *--*--*--* 129 | // | 0| 2| 4| | 6| 8|10| |12|14|16| 130 | // *--*--*--* *--*--*--* *--*--*--* 131 | // | 1| 3| 5| | 7| 9|11| |13|15|17| 132 | // *--*--*--* *--*--*--* *--*--*--* 133 | // 134 | // The default buffer is 1024 x 512 with 16x super sampling. 135 | // ---------------------------------------------------------------------------------------------- // 136 | 137 | void GetNextRay(uint3 id, uint rayCount, uint width, uint height, 138 | out int2 xy, out vec2 uv, out int rayIndex, out Ray ray) { 139 | // 140 | // The array counter points to the last processed ray and is incremented to process the next ray. 141 | // 142 | rayIndex = _Rays.IncrementCounter() % rayCount; 143 | //rayIndex = ((id.x * height + id.y) + (width * height * id.z)) % rayCount; 144 | 145 | ray = _Rays[rayIndex]; 146 | 147 | // 148 | // Convert the ray index into 2D pixel screen coordinates. 149 | // 150 | xy = int2(rayIndex / height % width, rayIndex % height); 151 | 152 | // 153 | // Screen space UV in [0, 1]. 154 | // 155 | uv = vec2(xy.x / (float)width, 1 - xy.y / (float)height); 156 | 157 | // 158 | // Pixels are super sampled, so jitter by random (0, dx) (0, dy). 159 | // 160 | uv += Noise(uv + _R0 * id.z) * vec2(1/(float)width, 1/(float)height); 161 | } 162 | 163 | // ---------------------------------------------------------------------------------------------- // 164 | // Camera Integration for Primary Rays. 165 | // 166 | // Strictly speaking, this is just initializing primary rays from inverse View & Projection 167 | // matricies and is not Unity specific. 168 | // ---------------------------------------------------------------------------------------------- // 169 | 170 | Ray InitCameraRay(vec2 uv) { 171 | // 172 | // Compute the NDC-space (0,1) focus distance by projecting from camera-space. 173 | // 174 | vec4 focalPlane = vec4(0, 0, -_FocusDistance * 2, 1); 175 | focalPlane = mul(_Projection, focalPlane); 176 | focalPlane /= focalPlane.w; 177 | 178 | // 179 | // Initialize the rayStart position based on the UV of ray, on the near clip plane. 180 | // The position is specified in NDC-space, so it doesn't need the camera transform. 181 | // 182 | vec4 rayStart = vec4((uv.xy) * 2 - 1, 0, 1); 183 | 184 | // 185 | // Snap the rayEnd to the _FocusDistance, this is required for the lens sampling / defocus 186 | // blur to work. 187 | // 188 | vec4 rayEnd = vec4((uv.xy) * 2 - 1, focalPlane.z, 1); 189 | 190 | // 191 | // Convert rayStart and rayEnd to world-space. 192 | // 193 | rayStart = mul(_ProjectionI, rayStart); 194 | rayStart /= rayStart.w; 195 | rayStart = mul(_CameraI, rayStart); 196 | 197 | rayEnd = mul(_ProjectionI, rayEnd); 198 | rayEnd /= rayEnd.w; 199 | rayEnd = mul(_CameraI, rayEnd); 200 | 201 | // 202 | // In world-space, setup the ray offset for depth of field (defocus blur). 203 | // 204 | const float lensRadius = _Aperture / 2.0; 205 | const vec3 offset = lensRadius * RandomInUnitDisk(uv); 206 | 207 | // 208 | // The ray start and end offsets counter each other, which causes any object not at rayEnd depth 209 | // to become defocused incrementally more the further it is from that distance. 210 | // 211 | rayStart.xy += offset.xy; 212 | rayEnd.xy -= offset.xy; 213 | 214 | // 215 | // Setup the ray object, converting rayStart/rayEnd to a direction. 216 | // Color defaults to the sky dome in the direction of the ray and the material is not yet known. 217 | // 218 | Ray r; 219 | r.origin = rayStart.xyz; 220 | r.direction = rayEnd.xyz - rayStart.xyz; 221 | r.bounces = 0; 222 | r.color = vec3(1, 1, 1); 223 | r.accumColor = vec4(0, 0, 0, 0); 224 | r.material = kMaterialInvalid; 225 | 226 | return r; 227 | } 228 | 229 | // ---------------------------------------------------------------------------------------------- // 230 | // RayTrace Kernel. 231 | // 232 | // Used for primary and secondary rays, the RayTrace() kernel computes one bounce for every ray 233 | // processed. 234 | // ---------------------------------------------------------------------------------------------- // 235 | 236 | [numthreads(8,8,1)] 237 | void RayTrace(uint3 id : SV_DispatchThreadID, 238 | uint3 groupThreadID : SV_GroupThreadID, 239 | uint groupIndex : SV_GroupIndex) 240 | { 241 | uint width; 242 | uint height; 243 | _AccumulatedImage.GetDimensions(width, height); 244 | 245 | uint rayCount; 246 | uint stride; 247 | _Rays.GetDimensions(rayCount, stride); 248 | 249 | int rayIndex; 250 | int2 xy; 251 | vec2 uv; 252 | Ray r; 253 | 254 | GetNextRay(id, rayCount, width, height, /*outputs*/ xy, uv, rayIndex, r); 255 | if (length(r.direction) == 0) { 256 | return; 257 | } 258 | 259 | // 260 | // Preconditions: length(r.direction) != 0 261 | // rayIndex & xy are initialized for r. 262 | // 263 | 264 | r.direction = normalize(r.direction); 265 | bool scattered = Color(r, uv); 266 | 267 | if (r.bounces > _MaxBounces || !scattered) { 268 | // Alpha is actually our sample count, which is used to normalize the accumulated 269 | // output; by setting alpha=1 here, 1 is added to the sample count for this pixel. 270 | r.accumColor += vec4(lerp(r.color, float3(0,0,0), r.bounces > _MaxBounces), 1); 271 | 272 | r.origin = vec3(0,0,0); 273 | r.direction = vec3(0,0,0); 274 | r.color = vec3(0,0,0); 275 | r.bounces = 0; 276 | } 277 | 278 | _Rays[rayIndex] = r; 279 | } 280 | 281 | // ---------------------------------------------------------------------------------------------- // 282 | // Camera Rays Kernel. 283 | // ---------------------------------------------------------------------------------------------- // 284 | 285 | [numthreads(8,8,1)] 286 | void InitCameraRays(uint3 id : SV_DispatchThreadID, 287 | uint3 groupThreadID : SV_GroupThreadID, 288 | uint groupIndex : SV_GroupIndex) 289 | { 290 | uint width; 291 | uint height; 292 | _AccumulatedImage.GetDimensions(width, height); 293 | 294 | int rayIndex = (id.x * height + id.y) + (width * height * id.z); 295 | 296 | if (length(_Rays[rayIndex].direction) > 0) { 297 | // This ray is being processed. 298 | return; 299 | } 300 | 301 | vec2 uv = vec2(id.x / (width - 1.0), 302 | id.y / (height - 1.0)); 303 | 304 | // Jitter the ray by jittering the UV sample. 305 | 306 | uv += (Noise(uv * 10000 + id.z * 100 + _Time.y) - .5) 307 | * vec2(1.0 / width, 1.0 / height); 308 | 309 | Ray r = InitCameraRay(uv); 310 | r.accumColor = _Rays[rayIndex].accumColor; 311 | _Rays[rayIndex] = r; 312 | } 313 | 314 | // ---------------------------------------------------------------------------------------------- // 315 | // Accumulation Normalizing Kernel. 316 | // ---------------------------------------------------------------------------------------------- // 317 | 318 | [numthreads(8,8,1)] 319 | void NormalizeSamples(uint3 id : SV_DispatchThreadID) 320 | { 321 | uint width; 322 | uint height; 323 | _AccumulatedImage.GetDimensions(width, height); 324 | 325 | // 326 | // The max() avoids div/0 and min avoids HDR ghosting for very bright values. 327 | // 328 | int rayIndex = (id.x * height + id.y) + (width * height * id.z); 329 | _Rays[rayIndex].accumColor = min(1, 330 | _Rays[rayIndex].accumColor 331 | / max(1, _Rays[rayIndex].accumColor.a)); 332 | _Rays[rayIndex].accumColor /= 8; 333 | } 334 | -------------------------------------------------------------------------------- /Assets/Kernels/RayTracer.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2e683fd9df8b664fa611bdbbcc24e17 3 | timeCreated: 1518985056 4 | licenseType: Pro 5 | ComputeShaderImporter: 6 | currentAPIMask: 4 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Kernels/Sampling.cginc: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | float4 _Time; 16 | 17 | float _Seed01; 18 | float _R0; 19 | float _R1; 20 | float _R2; 21 | 22 | StructuredBuffer _HemisphereSamples; 23 | 24 | // ---------------------------------------------------------------------------------------------- // 25 | // Noise & Sampling Functions 26 | // ---------------------------------------------------------------------------------------------- / 27 | 28 | // 29 | // Interleaved Gradient Noise by Jorge Jimenez. 30 | // http://www.iryoku.com/next-generation-post-processing-in-call-of-duty-advanced-warfare 31 | // 32 | float GradNoise(vec2 xy) { 33 | return frac(52.9829189f * frac(0.06711056f*float(xy.x) + 0.00583715f*float(xy.y))); 34 | } 35 | 36 | // 37 | // Noise entry point, to abstract away details of the underlying noise function. 38 | // 39 | float Noise(vec2 uv) { 40 | return GradNoise(floor(fmod(uv, 1024)) + _Seed01 * _Time.y); 41 | } 42 | 43 | // 44 | // Select a random point on a unit sphere, ideally with uniform distrobution. 45 | // 46 | vec3 RandomInUnitSphere(vec2 uv) { 47 | vec3 p; 48 | // Should be a loop until a point on unit sphere is found. 49 | // Then normalize wouldn't be needed. 50 | p = 2.0 * normalize(vec3(Noise(uv * 2000 * (1+_R0)) * 2 - .5, 51 | Noise(uv * 2000 * (1+_R1)) * 2 - .5, 52 | Noise(uv * 2000 * (1+_R2)) * 2 - .5)) - vec3(1,1,1); 53 | 54 | p = 2.0 * normalize(vec3(_R0, _R1, _R2)) - vec3(1,1,1); 55 | p = _HemisphereSamples[(Noise(uv * 2000) * 392901) % 4096]; 56 | return p; 57 | } 58 | 59 | vec3 RandomInUnitDisk(vec2 uv) { 60 | return RandomInUnitSphere(uv); 61 | } 62 | -------------------------------------------------------------------------------- /Assets/Kernels/Sampling.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43aa076838a63394f986644edd3bb1e8 3 | timeCreated: 1520810869 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Kernels/Shading.cginc: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #define kMaterialInvalid 0 16 | #define kMaterialLambertian 1 17 | #define kMaterialMetal 2 18 | #define kMaterialDielectric 3 19 | 20 | bool Refract(vec3 v, vec3 n, float niOverNt, out vec3 refracted) { 21 | vec3 uv = normalize(v); 22 | float dt = dot(uv, n); 23 | float discriminant = 1.0 - niOverNt * niOverNt * (1-dt*dt); 24 | if (discriminant > 0) { 25 | refracted = niOverNt * (v - n*dt) - n*sqrt(discriminant); 26 | return true; 27 | } 28 | return false; 29 | } 30 | 31 | float Schlick(float cosine, float refIdx) { 32 | float r0 = (1 - refIdx) / (1 + refIdx); 33 | r0 = r0 * r0; 34 | return r0 + (1 - r0) * pow((1 - cosine), 5); 35 | } 36 | 37 | vec3 EnvColor(Ray r, vec2 uv) { 38 | vec3 unitDirection = normalize(r.direction); 39 | float t = 0.5 * (unitDirection.y + 1.0); 40 | return 1.0 * ((1.0 - t) * vec3(1.0, 1.0, 1.0) + t * vec3(0.5, 0.7, 1.0)); 41 | } 42 | 43 | bool ScatterLambertian(Ray rIn, HitRecord rec, inout vec3 attenuation, inout Ray scattered) { 44 | if (rec.material != kMaterialLambertian) { return false; } 45 | 46 | vec3 target = rec.p + rec.normal + RandomInUnitSphere(rec.uv); 47 | 48 | scattered.origin = rec.p + .001 * rec.normal; 49 | scattered.direction = target - rec.p; 50 | scattered.color = rIn.color; 51 | scattered.bounces = rIn.bounces; 52 | scattered.material = kMaterialLambertian; 53 | 54 | attenuation = rec.albedo; 55 | return true; 56 | } 57 | 58 | bool ScatterMetal(Ray rIn, HitRecord rec, inout vec3 attenuation, inout Ray scattered) { 59 | if (rec.material != kMaterialMetal) { return false; } 60 | 61 | // Fuzz should be a material parameter. 62 | const float kFuzz = .00; 63 | 64 | vec3 reflected = reflect(normalize(rIn.direction), rec.normal); 65 | 66 | scattered.direction = reflected + kFuzz * RandomInUnitSphere(rec.uv); 67 | scattered.origin = rec.p + .001 * scattered.direction; 68 | scattered.color = rIn.color; 69 | scattered.bounces = rIn.bounces; 70 | scattered.material = kMaterialMetal; 71 | 72 | attenuation = rec.albedo; 73 | return dot(scattered.direction, rec.normal) > 0; 74 | } 75 | 76 | bool ScatterDielectric(Ray rIn, HitRecord rec, inout vec3 attenuation, inout Ray scattered) { 77 | if (rec.material != kMaterialDielectric) { return false; } 78 | 79 | const float refIdx = 1.5; 80 | vec3 outwardNormal; 81 | float niOverNt; 82 | vec3 refracted; 83 | float cosine; 84 | 85 | if (dot(rIn.direction, rec.normal) > 0) { 86 | outwardNormal = -rec.normal; 87 | niOverNt = refIdx; 88 | cosine = refIdx * dot(rIn.direction, rec.normal) / length(rIn.direction); 89 | } else { 90 | outwardNormal = rec.normal; 91 | niOverNt = 1.0 / refIdx; 92 | cosine = -dot(rIn.direction, rec.normal) / length(rIn.direction); 93 | } 94 | 95 | // HLSL has a built-in refract function, but used the version for the book for readability. 96 | float reflectProb = lerp(1.0, Schlick(cosine, refIdx), 97 | Refract(rIn.direction, outwardNormal, niOverNt, refracted)); 98 | 99 | attenuation = vec3(1,1,1); 100 | scattered.color = rIn.color; 101 | scattered.bounces = rIn.bounces; 102 | scattered.origin = rec.p; 103 | scattered.material = kMaterialDielectric; 104 | 105 | if (Noise(rec.uv) < reflectProb) { 106 | scattered.direction = normalize(reflect(rIn.direction, rec.normal)); 107 | } else { 108 | scattered.direction = refracted; 109 | } 110 | 111 | return true; 112 | } 113 | -------------------------------------------------------------------------------- /Assets/Kernels/Shading.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc2eef4884875cf49b115060fda8318e 3 | timeCreated: 1520810735 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Kernels/Structures.cginc: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // 16 | // Glue to make data types work. 17 | // 18 | #define vec2 float2 19 | #define vec3 float3 20 | #define vec4 float4 21 | 22 | #define FLT_MAX 3.402823466e+38F 23 | 24 | // ---------------------------------------------------------------------------------------------- // 25 | // Ray Tracing Structures. 26 | // ---------------------------------------------------------------------------------------------- / 27 | 28 | struct Ray { 29 | vec3 origin; 30 | vec3 direction; 31 | vec3 color; 32 | vec4 accumColor; 33 | int bounces; 34 | int material; 35 | 36 | vec3 PointAtParameter(float t) { 37 | return origin + t * direction; 38 | } 39 | }; 40 | 41 | struct HitRecord { 42 | vec2 uv; 43 | float t; 44 | vec3 p; 45 | vec3 normal; 46 | vec3 albedo; 47 | int material; 48 | }; 49 | 50 | struct Sphere { 51 | vec3 center; 52 | float radius; 53 | int material; 54 | vec3 albedo; 55 | 56 | bool Hit(Ray r, float tMin, float tMax, out HitRecord rec); 57 | }; 58 | 59 | bool Sphere::Hit(Ray r, float tMin, float tMax, out HitRecord rec) { 60 | rec.t = tMin; 61 | rec.p = vec3(0,0,0); 62 | rec.normal = vec3(0,0,0); 63 | rec.uv = vec2(0,0); 64 | rec.albedo = albedo; 65 | rec.material = material; 66 | 67 | vec3 oc = r.origin - center; 68 | float a = dot(r.direction, r.direction); 69 | float b = dot(oc, r.direction); 70 | float c = dot(oc, oc) - radius * radius; 71 | float discriminant = b*b - a*c; 72 | 73 | if (discriminant <= 0) { 74 | return false; 75 | } 76 | 77 | float temp = (-b - sqrt(b*b - a*c)) / a; 78 | if (temp < tMax && temp > tMin) { 79 | rec.t = temp; 80 | rec.p = r.PointAtParameter(rec.t); 81 | rec.normal = normalize((rec.p - center) / radius); 82 | return true; 83 | } 84 | 85 | temp = (-b + sqrt(b*b - a*c)) / a; 86 | if (temp < tMax && temp > tMin) { 87 | rec.t = temp; 88 | rec.p = r.PointAtParameter(rec.t); 89 | rec.normal = normalize((rec.p - center) / radius); 90 | return true; 91 | } 92 | 93 | return false; 94 | } 95 | -------------------------------------------------------------------------------- /Assets/Kernels/Structures.cginc.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 50e13cf4627c0564b9b3cf918cb84f90 3 | timeCreated: 1520810244 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Main.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: 8 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.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, 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: 10304, guid: 0000000000000000f000000000000000, type: 0} 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: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.17311467, g: 0.21636559, b: 0.2983781, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 1 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | m_NavMeshData: {fileID: 0} 113 | --- !u!1 &65924947 114 | GameObject: 115 | m_ObjectHideFlags: 0 116 | m_PrefabParentObject: {fileID: 0} 117 | m_PrefabInternal: {fileID: 0} 118 | serializedVersion: 5 119 | m_Component: 120 | - component: {fileID: 65924948} 121 | - component: {fileID: 65924950} 122 | - component: {fileID: 65924949} 123 | m_Layer: 0 124 | m_Name: SphericalFibDebug 125 | m_TagString: Untagged 126 | m_Icon: {fileID: 0} 127 | m_NavMeshLayer: 0 128 | m_StaticEditorFlags: 0 129 | m_IsActive: 0 130 | --- !u!4 &65924948 131 | Transform: 132 | m_ObjectHideFlags: 0 133 | m_PrefabParentObject: {fileID: 0} 134 | m_PrefabInternal: {fileID: 0} 135 | m_GameObject: {fileID: 65924947} 136 | m_LocalRotation: {x: -0.0112719415, y: 0.98795927, z: -0.12693575, w: -0.087731145} 137 | m_LocalPosition: {x: 2.9897037, y: 3.6644473, z: -2.745366} 138 | m_LocalScale: {x: 1, y: 1, z: 1} 139 | m_Children: [] 140 | m_Father: {fileID: 1868011683} 141 | m_RootOrder: 1 142 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 143 | --- !u!23 &65924949 144 | MeshRenderer: 145 | m_ObjectHideFlags: 0 146 | m_PrefabParentObject: {fileID: 0} 147 | m_PrefabInternal: {fileID: 0} 148 | m_GameObject: {fileID: 65924947} 149 | m_Enabled: 1 150 | m_CastShadows: 1 151 | m_ReceiveShadows: 1 152 | m_MotionVectors: 1 153 | m_LightProbeUsage: 1 154 | m_ReflectionProbeUsage: 1 155 | m_Materials: 156 | - {fileID: 0} 157 | m_StaticBatchInfo: 158 | firstSubMesh: 0 159 | subMeshCount: 0 160 | m_StaticBatchRoot: {fileID: 0} 161 | m_ProbeAnchor: {fileID: 0} 162 | m_LightProbeVolumeOverride: {fileID: 0} 163 | m_ScaleInLightmap: 1 164 | m_PreserveUVs: 0 165 | m_IgnoreNormalsForChartDetection: 0 166 | m_ImportantGI: 0 167 | m_SelectedEditorRenderState: 3 168 | m_MinimumChartSize: 4 169 | m_AutoUVMaxDistance: 0.5 170 | m_AutoUVMaxAngle: 89 171 | m_LightmapParameters: {fileID: 0} 172 | m_SortingLayerID: 0 173 | m_SortingLayer: 0 174 | m_SortingOrder: 0 175 | --- !u!33 &65924950 176 | MeshFilter: 177 | m_ObjectHideFlags: 0 178 | m_PrefabParentObject: {fileID: 0} 179 | m_PrefabInternal: {fileID: 0} 180 | m_GameObject: {fileID: 65924947} 181 | m_Mesh: {fileID: 0} 182 | --- !u!1 &117437797 183 | GameObject: 184 | m_ObjectHideFlags: 0 185 | m_PrefabParentObject: {fileID: 0} 186 | m_PrefabInternal: {fileID: 0} 187 | serializedVersion: 5 188 | m_Component: 189 | - component: {fileID: 117437798} 190 | m_Layer: 0 191 | m_Name: World 192 | m_TagString: Untagged 193 | m_Icon: {fileID: 0} 194 | m_NavMeshLayer: 0 195 | m_StaticEditorFlags: 0 196 | m_IsActive: 1 197 | --- !u!4 &117437798 198 | Transform: 199 | m_ObjectHideFlags: 0 200 | m_PrefabParentObject: {fileID: 0} 201 | m_PrefabInternal: {fileID: 0} 202 | m_GameObject: {fileID: 117437797} 203 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 204 | m_LocalPosition: {x: 0, y: 0, z: 0} 205 | m_LocalScale: {x: 1, y: 1, z: 1} 206 | m_Children: 207 | - {fileID: 519008341} 208 | - {fileID: 681876705} 209 | - {fileID: 1644108371} 210 | m_Father: {fileID: 0} 211 | m_RootOrder: 0 212 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 213 | --- !u!1 &519008336 214 | GameObject: 215 | m_ObjectHideFlags: 0 216 | m_PrefabParentObject: {fileID: 0} 217 | m_PrefabInternal: {fileID: 0} 218 | serializedVersion: 5 219 | m_Component: 220 | - component: {fileID: 519008341} 221 | - component: {fileID: 519008340} 222 | - component: {fileID: 519008342} 223 | m_Layer: 0 224 | m_Name: Camera 225 | m_TagString: MainCamera 226 | m_Icon: {fileID: 0} 227 | m_NavMeshLayer: 0 228 | m_StaticEditorFlags: 0 229 | m_IsActive: 1 230 | --- !u!20 &519008340 231 | Camera: 232 | m_ObjectHideFlags: 0 233 | m_PrefabParentObject: {fileID: 0} 234 | m_PrefabInternal: {fileID: 0} 235 | m_GameObject: {fileID: 519008336} 236 | m_Enabled: 1 237 | serializedVersion: 2 238 | m_ClearFlags: 1 239 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 240 | m_NormalizedViewPortRect: 241 | serializedVersion: 2 242 | x: 0 243 | y: 0 244 | width: 1 245 | height: 1 246 | near clip plane: 0.01 247 | far clip plane: 10 248 | field of view: 55 249 | orthographic: 0 250 | orthographic size: 5 251 | m_Depth: -1 252 | m_CullingMask: 253 | serializedVersion: 2 254 | m_Bits: 4294967295 255 | m_RenderingPath: -1 256 | m_TargetTexture: {fileID: 0} 257 | m_TargetDisplay: 0 258 | m_TargetEye: 3 259 | m_HDR: 1 260 | m_AllowMSAA: 0 261 | m_ForceIntoRT: 0 262 | m_OcclusionCulling: 1 263 | m_StereoConvergence: 10 264 | m_StereoSeparation: 0.022 265 | m_StereoMirrorMode: 0 266 | --- !u!4 &519008341 267 | Transform: 268 | m_ObjectHideFlags: 0 269 | m_PrefabParentObject: {fileID: 0} 270 | m_PrefabInternal: {fileID: 0} 271 | m_GameObject: {fileID: 519008336} 272 | m_LocalRotation: {x: -0.0112719415, y: 0.98795927, z: -0.12693575, w: -0.087731145} 273 | m_LocalPosition: {x: 0.58, y: 0.86, z: 3.24} 274 | m_LocalScale: {x: 1, y: 1, z: 1} 275 | m_Children: [] 276 | m_Father: {fileID: 117437798} 277 | m_RootOrder: 0 278 | m_LocalEulerAnglesHint: {x: 50.609, y: 188.767, z: 7.2330003} 279 | --- !u!114 &519008342 280 | MonoBehaviour: 281 | m_ObjectHideFlags: 0 282 | m_PrefabParentObject: {fileID: 0} 283 | m_PrefabInternal: {fileID: 0} 284 | m_GameObject: {fileID: 519008336} 285 | m_Enabled: 1 286 | m_EditorHideFlags: 0 287 | m_Script: {fileID: 11500000, guid: 83a2285699a2dd44080bf68b466d6898, type: 3} 288 | m_Name: 289 | m_EditorClassIdentifier: 290 | MainTexture: {fileID: 8400000, guid: 428ba3f269cdf8c41a68d5466cd0d1a7, type: 2} 291 | RayTraceKernels: {fileID: 7200000, guid: c2e683fd9df8b664fa611bdbbcc24e17, type: 3} 292 | FullScreenResolve: {fileID: 2100000, guid: 770f95e25cbbb7c468dddf886a4ba257, type: 2} 293 | FocusDistance: 6 294 | FocusObject: {fileID: 681876705} 295 | Aperture: 0.0001 296 | MaxBounces: 64 297 | SphericalFibDebugMesh: {fileID: 65924950} 298 | m_sampleCount: 0 299 | --- !u!1 &681876704 300 | GameObject: 301 | m_ObjectHideFlags: 0 302 | m_PrefabParentObject: {fileID: 0} 303 | m_PrefabInternal: {fileID: 0} 304 | serializedVersion: 5 305 | m_Component: 306 | - component: {fileID: 681876705} 307 | m_Layer: 0 308 | m_Name: CameraFocusTarget 309 | m_TagString: Untagged 310 | m_Icon: {fileID: 0} 311 | m_NavMeshLayer: 0 312 | m_StaticEditorFlags: 0 313 | m_IsActive: 1 314 | --- !u!4 &681876705 315 | Transform: 316 | m_ObjectHideFlags: 0 317 | m_PrefabParentObject: {fileID: 0} 318 | m_PrefabInternal: {fileID: 0} 319 | m_GameObject: {fileID: 681876704} 320 | m_LocalRotation: {x: -0.0112719415, y: 0.98795927, z: -0.12693575, w: -0.087731145} 321 | m_LocalPosition: {x: 0, y: 0, z: -0} 322 | m_LocalScale: {x: 1, y: 1, z: 1} 323 | m_Children: [] 324 | m_Father: {fileID: 117437798} 325 | m_RootOrder: 1 326 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 327 | --- !u!1 &962050394 328 | GameObject: 329 | m_ObjectHideFlags: 0 330 | m_PrefabParentObject: {fileID: 0} 331 | m_PrefabInternal: {fileID: 0} 332 | serializedVersion: 5 333 | m_Component: 334 | - component: {fileID: 962050395} 335 | - component: {fileID: 962050398} 336 | - component: {fileID: 962050396} 337 | - component: {fileID: 962050397} 338 | m_Layer: 0 339 | m_Name: Ground 340 | m_TagString: Untagged 341 | m_Icon: {fileID: 0} 342 | m_NavMeshLayer: 0 343 | m_StaticEditorFlags: 0 344 | m_IsActive: 1 345 | --- !u!4 &962050395 346 | Transform: 347 | m_ObjectHideFlags: 0 348 | m_PrefabParentObject: {fileID: 0} 349 | m_PrefabInternal: {fileID: 0} 350 | m_GameObject: {fileID: 962050394} 351 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 352 | m_LocalPosition: {x: 0, y: -100.5, z: 0} 353 | m_LocalScale: {x: 200, y: 200, z: 200} 354 | m_Children: [] 355 | m_Father: {fileID: 1644108371} 356 | m_RootOrder: 0 357 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 358 | --- !u!23 &962050396 359 | MeshRenderer: 360 | m_ObjectHideFlags: 0 361 | m_PrefabParentObject: {fileID: 0} 362 | m_PrefabInternal: {fileID: 0} 363 | m_GameObject: {fileID: 962050394} 364 | m_Enabled: 1 365 | m_CastShadows: 1 366 | m_ReceiveShadows: 1 367 | m_MotionVectors: 1 368 | m_LightProbeUsage: 1 369 | m_ReflectionProbeUsage: 1 370 | m_Materials: 371 | - {fileID: 2100000, guid: 264777252f417854c96ef26bc2f1cfb6, type: 2} 372 | m_StaticBatchInfo: 373 | firstSubMesh: 0 374 | subMeshCount: 0 375 | m_StaticBatchRoot: {fileID: 0} 376 | m_ProbeAnchor: {fileID: 0} 377 | m_LightProbeVolumeOverride: {fileID: 0} 378 | m_ScaleInLightmap: 1 379 | m_PreserveUVs: 1 380 | m_IgnoreNormalsForChartDetection: 0 381 | m_ImportantGI: 0 382 | m_SelectedEditorRenderState: 3 383 | m_MinimumChartSize: 4 384 | m_AutoUVMaxDistance: 0.5 385 | m_AutoUVMaxAngle: 89 386 | m_LightmapParameters: {fileID: 0} 387 | m_SortingLayerID: 0 388 | m_SortingLayer: 0 389 | m_SortingOrder: 0 390 | --- !u!114 &962050397 391 | MonoBehaviour: 392 | m_ObjectHideFlags: 0 393 | m_PrefabParentObject: {fileID: 0} 394 | m_PrefabInternal: {fileID: 0} 395 | m_GameObject: {fileID: 962050394} 396 | m_Enabled: 1 397 | m_EditorHideFlags: 0 398 | m_Script: {fileID: 11500000, guid: 9fab6d4b34798f647a815dfc7750c675, type: 3} 399 | m_Name: 400 | m_EditorClassIdentifier: 401 | Material: 1 402 | ColorMultiplier: 1 403 | --- !u!33 &962050398 404 | MeshFilter: 405 | m_ObjectHideFlags: 0 406 | m_PrefabParentObject: {fileID: 0} 407 | m_PrefabInternal: {fileID: 0} 408 | m_GameObject: {fileID: 962050394} 409 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 410 | --- !u!1 &1294280802 411 | GameObject: 412 | m_ObjectHideFlags: 0 413 | m_PrefabParentObject: {fileID: 0} 414 | m_PrefabInternal: {fileID: 0} 415 | serializedVersion: 5 416 | m_Component: 417 | - component: {fileID: 1294280803} 418 | - component: {fileID: 1294280804} 419 | m_Layer: 0 420 | m_Name: DirectionalLight (for editor viewport) 421 | m_TagString: Untagged 422 | m_Icon: {fileID: 0} 423 | m_NavMeshLayer: 0 424 | m_StaticEditorFlags: 0 425 | m_IsActive: 1 426 | --- !u!4 &1294280803 427 | Transform: 428 | m_ObjectHideFlags: 0 429 | m_PrefabParentObject: {fileID: 0} 430 | m_PrefabInternal: {fileID: 0} 431 | m_GameObject: {fileID: 1294280802} 432 | m_LocalRotation: {x: 0.6597651, y: -0, z: -0, w: 0.75147194} 433 | m_LocalPosition: {x: 2.9897037, y: 3.6644473, z: -2.745366} 434 | m_LocalScale: {x: 1, y: 1, z: 1} 435 | m_Children: [] 436 | m_Father: {fileID: 1868011683} 437 | m_RootOrder: 0 438 | m_LocalEulerAnglesHint: {x: 82.564, y: 0, z: 0} 439 | --- !u!108 &1294280804 440 | Light: 441 | m_ObjectHideFlags: 0 442 | m_PrefabParentObject: {fileID: 0} 443 | m_PrefabInternal: {fileID: 0} 444 | m_GameObject: {fileID: 1294280802} 445 | m_Enabled: 1 446 | serializedVersion: 8 447 | m_Type: 1 448 | m_Color: {r: 1, g: 1, b: 1, a: 1} 449 | m_Intensity: 1 450 | m_Range: 10 451 | m_SpotAngle: 30 452 | m_CookieSize: 10 453 | m_Shadows: 454 | m_Type: 0 455 | m_Resolution: -1 456 | m_CustomResolution: -1 457 | m_Strength: 1 458 | m_Bias: 0.05 459 | m_NormalBias: 0.4 460 | m_NearPlane: 0.2 461 | m_Cookie: {fileID: 0} 462 | m_DrawHalo: 0 463 | m_Flare: {fileID: 0} 464 | m_RenderMode: 0 465 | m_CullingMask: 466 | serializedVersion: 2 467 | m_Bits: 4294967295 468 | m_Lightmapping: 4 469 | m_AreaSize: {x: 1, y: 1} 470 | m_BounceIntensity: 1 471 | m_ColorTemperature: 6570 472 | m_UseColorTemperature: 0 473 | m_ShadowRadius: 0 474 | m_ShadowAngle: 0 475 | --- !u!1 &1469720846 476 | GameObject: 477 | m_ObjectHideFlags: 0 478 | m_PrefabParentObject: {fileID: 0} 479 | m_PrefabInternal: {fileID: 0} 480 | serializedVersion: 5 481 | m_Component: 482 | - component: {fileID: 1469720847} 483 | - component: {fileID: 1469720850} 484 | - component: {fileID: 1469720849} 485 | - component: {fileID: 1469720848} 486 | m_Layer: 0 487 | m_Name: Metal 488 | m_TagString: Untagged 489 | m_Icon: {fileID: 0} 490 | m_NavMeshLayer: 0 491 | m_StaticEditorFlags: 0 492 | m_IsActive: 1 493 | --- !u!4 &1469720847 494 | Transform: 495 | m_ObjectHideFlags: 0 496 | m_PrefabParentObject: {fileID: 0} 497 | m_PrefabInternal: {fileID: 0} 498 | m_GameObject: {fileID: 1469720846} 499 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 500 | m_LocalPosition: {x: 1.15, y: 0, z: 0} 501 | m_LocalScale: {x: 1, y: 1, z: 1} 502 | m_Children: [] 503 | m_Father: {fileID: 1644108371} 504 | m_RootOrder: 2 505 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 506 | --- !u!114 &1469720848 507 | MonoBehaviour: 508 | m_ObjectHideFlags: 0 509 | m_PrefabParentObject: {fileID: 0} 510 | m_PrefabInternal: {fileID: 0} 511 | m_GameObject: {fileID: 1469720846} 512 | m_Enabled: 1 513 | m_EditorHideFlags: 0 514 | m_Script: {fileID: 11500000, guid: 9fab6d4b34798f647a815dfc7750c675, type: 3} 515 | m_Name: 516 | m_EditorClassIdentifier: 517 | Material: 2 518 | ColorMultiplier: 1 519 | --- !u!23 &1469720849 520 | MeshRenderer: 521 | m_ObjectHideFlags: 0 522 | m_PrefabParentObject: {fileID: 0} 523 | m_PrefabInternal: {fileID: 0} 524 | m_GameObject: {fileID: 1469720846} 525 | m_Enabled: 1 526 | m_CastShadows: 1 527 | m_ReceiveShadows: 1 528 | m_MotionVectors: 1 529 | m_LightProbeUsage: 1 530 | m_ReflectionProbeUsage: 1 531 | m_Materials: 532 | - {fileID: 2100000, guid: 6c38605a0f2e8f4499929e4b9c4e4a95, type: 2} 533 | m_StaticBatchInfo: 534 | firstSubMesh: 0 535 | subMeshCount: 0 536 | m_StaticBatchRoot: {fileID: 0} 537 | m_ProbeAnchor: {fileID: 0} 538 | m_LightProbeVolumeOverride: {fileID: 0} 539 | m_ScaleInLightmap: 1 540 | m_PreserveUVs: 1 541 | m_IgnoreNormalsForChartDetection: 0 542 | m_ImportantGI: 0 543 | m_SelectedEditorRenderState: 3 544 | m_MinimumChartSize: 4 545 | m_AutoUVMaxDistance: 0.5 546 | m_AutoUVMaxAngle: 89 547 | m_LightmapParameters: {fileID: 0} 548 | m_SortingLayerID: 0 549 | m_SortingLayer: 0 550 | m_SortingOrder: 0 551 | --- !u!33 &1469720850 552 | MeshFilter: 553 | m_ObjectHideFlags: 0 554 | m_PrefabParentObject: {fileID: 0} 555 | m_PrefabInternal: {fileID: 0} 556 | m_GameObject: {fileID: 1469720846} 557 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 558 | --- !u!1 &1644108370 559 | GameObject: 560 | m_ObjectHideFlags: 0 561 | m_PrefabParentObject: {fileID: 0} 562 | m_PrefabInternal: {fileID: 0} 563 | serializedVersion: 5 564 | m_Component: 565 | - component: {fileID: 1644108371} 566 | m_Layer: 0 567 | m_Name: Spheres 568 | m_TagString: Untagged 569 | m_Icon: {fileID: 0} 570 | m_NavMeshLayer: 0 571 | m_StaticEditorFlags: 0 572 | m_IsActive: 1 573 | --- !u!4 &1644108371 574 | Transform: 575 | m_ObjectHideFlags: 0 576 | m_PrefabParentObject: {fileID: 0} 577 | m_PrefabInternal: {fileID: 0} 578 | m_GameObject: {fileID: 1644108370} 579 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 580 | m_LocalPosition: {x: 0, y: 0, z: 0} 581 | m_LocalScale: {x: 1, y: 1, z: 1} 582 | m_Children: 583 | - {fileID: 962050395} 584 | - {fileID: 1942455972} 585 | - {fileID: 1469720847} 586 | - {fileID: 1950634371} 587 | - {fileID: 1894408548} 588 | m_Father: {fileID: 117437798} 589 | m_RootOrder: 2 590 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 591 | --- !u!1 &1868011682 592 | GameObject: 593 | m_ObjectHideFlags: 0 594 | m_PrefabParentObject: {fileID: 0} 595 | m_PrefabInternal: {fileID: 0} 596 | serializedVersion: 5 597 | m_Component: 598 | - component: {fileID: 1868011683} 599 | m_Layer: 0 600 | m_Name: EditorDebug 601 | m_TagString: Untagged 602 | m_Icon: {fileID: 0} 603 | m_NavMeshLayer: 0 604 | m_StaticEditorFlags: 0 605 | m_IsActive: 1 606 | --- !u!4 &1868011683 607 | Transform: 608 | m_ObjectHideFlags: 0 609 | m_PrefabParentObject: {fileID: 0} 610 | m_PrefabInternal: {fileID: 0} 611 | m_GameObject: {fileID: 1868011682} 612 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 613 | m_LocalPosition: {x: -2.9897037, y: -3.6644473, z: 2.745366} 614 | m_LocalScale: {x: 1, y: 1, z: 1} 615 | m_Children: 616 | - {fileID: 1294280803} 617 | - {fileID: 65924948} 618 | m_Father: {fileID: 0} 619 | m_RootOrder: 1 620 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 621 | --- !u!1 &1894408547 622 | GameObject: 623 | m_ObjectHideFlags: 0 624 | m_PrefabParentObject: {fileID: 0} 625 | m_PrefabInternal: {fileID: 0} 626 | serializedVersion: 5 627 | m_Component: 628 | - component: {fileID: 1894408548} 629 | - component: {fileID: 1894408551} 630 | - component: {fileID: 1894408550} 631 | - component: {fileID: 1894408549} 632 | m_Layer: 0 633 | m_Name: GlassInner 634 | m_TagString: Untagged 635 | m_Icon: {fileID: 0} 636 | m_NavMeshLayer: 0 637 | m_StaticEditorFlags: 0 638 | m_IsActive: 1 639 | --- !u!4 &1894408548 640 | Transform: 641 | m_ObjectHideFlags: 0 642 | m_PrefabParentObject: {fileID: 0} 643 | m_PrefabInternal: {fileID: 0} 644 | m_GameObject: {fileID: 1894408547} 645 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 646 | m_LocalPosition: {x: -1.024, y: 0, z: 0} 647 | m_LocalScale: {x: -0.9, y: -0.9, z: -0.9} 648 | m_Children: [] 649 | m_Father: {fileID: 1644108371} 650 | m_RootOrder: 4 651 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 652 | --- !u!114 &1894408549 653 | MonoBehaviour: 654 | m_ObjectHideFlags: 0 655 | m_PrefabParentObject: {fileID: 0} 656 | m_PrefabInternal: {fileID: 0} 657 | m_GameObject: {fileID: 1894408547} 658 | m_Enabled: 1 659 | m_EditorHideFlags: 0 660 | m_Script: {fileID: 11500000, guid: 9fab6d4b34798f647a815dfc7750c675, type: 3} 661 | m_Name: 662 | m_EditorClassIdentifier: 663 | Material: 3 664 | ColorMultiplier: 1 665 | --- !u!23 &1894408550 666 | MeshRenderer: 667 | m_ObjectHideFlags: 0 668 | m_PrefabParentObject: {fileID: 0} 669 | m_PrefabInternal: {fileID: 0} 670 | m_GameObject: {fileID: 1894408547} 671 | m_Enabled: 1 672 | m_CastShadows: 1 673 | m_ReceiveShadows: 1 674 | m_MotionVectors: 1 675 | m_LightProbeUsage: 1 676 | m_ReflectionProbeUsage: 1 677 | m_Materials: 678 | - {fileID: 2100000, guid: c67d44fa2b5b5594c89249383f5232fc, type: 2} 679 | m_StaticBatchInfo: 680 | firstSubMesh: 0 681 | subMeshCount: 0 682 | m_StaticBatchRoot: {fileID: 0} 683 | m_ProbeAnchor: {fileID: 0} 684 | m_LightProbeVolumeOverride: {fileID: 0} 685 | m_ScaleInLightmap: 1 686 | m_PreserveUVs: 1 687 | m_IgnoreNormalsForChartDetection: 0 688 | m_ImportantGI: 0 689 | m_SelectedEditorRenderState: 3 690 | m_MinimumChartSize: 4 691 | m_AutoUVMaxDistance: 0.5 692 | m_AutoUVMaxAngle: 89 693 | m_LightmapParameters: {fileID: 0} 694 | m_SortingLayerID: 0 695 | m_SortingLayer: 0 696 | m_SortingOrder: 0 697 | --- !u!33 &1894408551 698 | MeshFilter: 699 | m_ObjectHideFlags: 0 700 | m_PrefabParentObject: {fileID: 0} 701 | m_PrefabInternal: {fileID: 0} 702 | m_GameObject: {fileID: 1894408547} 703 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 704 | --- !u!1 &1942455971 705 | GameObject: 706 | m_ObjectHideFlags: 0 707 | m_PrefabParentObject: {fileID: 0} 708 | m_PrefabInternal: {fileID: 0} 709 | serializedVersion: 5 710 | m_Component: 711 | - component: {fileID: 1942455972} 712 | - component: {fileID: 1942455975} 713 | - component: {fileID: 1942455973} 714 | - component: {fileID: 1942455974} 715 | m_Layer: 0 716 | m_Name: Lambertian 717 | m_TagString: Untagged 718 | m_Icon: {fileID: 0} 719 | m_NavMeshLayer: 0 720 | m_StaticEditorFlags: 0 721 | m_IsActive: 1 722 | --- !u!4 &1942455972 723 | Transform: 724 | m_ObjectHideFlags: 0 725 | m_PrefabParentObject: {fileID: 0} 726 | m_PrefabInternal: {fileID: 0} 727 | m_GameObject: {fileID: 1942455971} 728 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 729 | m_LocalPosition: {x: 0, y: 0, z: 0} 730 | m_LocalScale: {x: 1, y: 1, z: 1} 731 | m_Children: [] 732 | m_Father: {fileID: 1644108371} 733 | m_RootOrder: 1 734 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 735 | --- !u!23 &1942455973 736 | MeshRenderer: 737 | m_ObjectHideFlags: 0 738 | m_PrefabParentObject: {fileID: 0} 739 | m_PrefabInternal: {fileID: 0} 740 | m_GameObject: {fileID: 1942455971} 741 | m_Enabled: 1 742 | m_CastShadows: 1 743 | m_ReceiveShadows: 1 744 | m_MotionVectors: 1 745 | m_LightProbeUsage: 1 746 | m_ReflectionProbeUsage: 1 747 | m_Materials: 748 | - {fileID: 2100000, guid: 733ba88db2a6f5747b7ee9b189dd3569, type: 2} 749 | m_StaticBatchInfo: 750 | firstSubMesh: 0 751 | subMeshCount: 0 752 | m_StaticBatchRoot: {fileID: 0} 753 | m_ProbeAnchor: {fileID: 0} 754 | m_LightProbeVolumeOverride: {fileID: 0} 755 | m_ScaleInLightmap: 1 756 | m_PreserveUVs: 1 757 | m_IgnoreNormalsForChartDetection: 0 758 | m_ImportantGI: 0 759 | m_SelectedEditorRenderState: 3 760 | m_MinimumChartSize: 4 761 | m_AutoUVMaxDistance: 0.5 762 | m_AutoUVMaxAngle: 89 763 | m_LightmapParameters: {fileID: 0} 764 | m_SortingLayerID: 0 765 | m_SortingLayer: 0 766 | m_SortingOrder: 0 767 | --- !u!114 &1942455974 768 | MonoBehaviour: 769 | m_ObjectHideFlags: 0 770 | m_PrefabParentObject: {fileID: 0} 771 | m_PrefabInternal: {fileID: 0} 772 | m_GameObject: {fileID: 1942455971} 773 | m_Enabled: 1 774 | m_EditorHideFlags: 0 775 | m_Script: {fileID: 11500000, guid: 9fab6d4b34798f647a815dfc7750c675, type: 3} 776 | m_Name: 777 | m_EditorClassIdentifier: 778 | Material: 1 779 | ColorMultiplier: 1 780 | --- !u!33 &1942455975 781 | MeshFilter: 782 | m_ObjectHideFlags: 0 783 | m_PrefabParentObject: {fileID: 0} 784 | m_PrefabInternal: {fileID: 0} 785 | m_GameObject: {fileID: 1942455971} 786 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 787 | --- !u!1 &1950634370 788 | GameObject: 789 | m_ObjectHideFlags: 0 790 | m_PrefabParentObject: {fileID: 0} 791 | m_PrefabInternal: {fileID: 0} 792 | serializedVersion: 5 793 | m_Component: 794 | - component: {fileID: 1950634371} 795 | - component: {fileID: 1950634374} 796 | - component: {fileID: 1950634373} 797 | - component: {fileID: 1950634372} 798 | m_Layer: 0 799 | m_Name: GlassOuter 800 | m_TagString: Untagged 801 | m_Icon: {fileID: 0} 802 | m_NavMeshLayer: 0 803 | m_StaticEditorFlags: 0 804 | m_IsActive: 1 805 | --- !u!4 &1950634371 806 | Transform: 807 | m_ObjectHideFlags: 0 808 | m_PrefabParentObject: {fileID: 0} 809 | m_PrefabInternal: {fileID: 0} 810 | m_GameObject: {fileID: 1950634370} 811 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 812 | m_LocalPosition: {x: -1.024, y: 0, z: 0} 813 | m_LocalScale: {x: 1, y: 1, z: 1} 814 | m_Children: [] 815 | m_Father: {fileID: 1644108371} 816 | m_RootOrder: 3 817 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 818 | --- !u!114 &1950634372 819 | MonoBehaviour: 820 | m_ObjectHideFlags: 0 821 | m_PrefabParentObject: {fileID: 0} 822 | m_PrefabInternal: {fileID: 0} 823 | m_GameObject: {fileID: 1950634370} 824 | m_Enabled: 1 825 | m_EditorHideFlags: 0 826 | m_Script: {fileID: 11500000, guid: 9fab6d4b34798f647a815dfc7750c675, type: 3} 827 | m_Name: 828 | m_EditorClassIdentifier: 829 | Material: 3 830 | ColorMultiplier: 1 831 | --- !u!23 &1950634373 832 | MeshRenderer: 833 | m_ObjectHideFlags: 0 834 | m_PrefabParentObject: {fileID: 0} 835 | m_PrefabInternal: {fileID: 0} 836 | m_GameObject: {fileID: 1950634370} 837 | m_Enabled: 1 838 | m_CastShadows: 1 839 | m_ReceiveShadows: 1 840 | m_MotionVectors: 1 841 | m_LightProbeUsage: 1 842 | m_ReflectionProbeUsage: 1 843 | m_Materials: 844 | - {fileID: 2100000, guid: c67d44fa2b5b5594c89249383f5232fc, type: 2} 845 | m_StaticBatchInfo: 846 | firstSubMesh: 0 847 | subMeshCount: 0 848 | m_StaticBatchRoot: {fileID: 0} 849 | m_ProbeAnchor: {fileID: 0} 850 | m_LightProbeVolumeOverride: {fileID: 0} 851 | m_ScaleInLightmap: 1 852 | m_PreserveUVs: 1 853 | m_IgnoreNormalsForChartDetection: 0 854 | m_ImportantGI: 0 855 | m_SelectedEditorRenderState: 3 856 | m_MinimumChartSize: 4 857 | m_AutoUVMaxDistance: 0.5 858 | m_AutoUVMaxAngle: 89 859 | m_LightmapParameters: {fileID: 0} 860 | m_SortingLayerID: 0 861 | m_SortingLayer: 0 862 | m_SortingOrder: 0 863 | --- !u!33 &1950634374 864 | MeshFilter: 865 | m_ObjectHideFlags: 0 866 | m_PrefabParentObject: {fileID: 0} 867 | m_PrefabInternal: {fileID: 0} 868 | m_GameObject: {fileID: 1950634370} 869 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 870 | -------------------------------------------------------------------------------- /Assets/Main.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d60091a41b50a8b44a7758050d8ba476 3 | timeCreated: 1518985038 4 | licenseType: Pro 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 38680cdedab9f8d43be66c1f4eea925f 3 | folderAsset: yes 4 | timeCreated: 1518985520 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/BlueDiffuse.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: BlueDiffuse 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.2941177, g: 0.50173014, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 67.255, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Materials/BlueDiffuse.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 733ba88db2a6f5747b7ee9b189dd3569 3 | timeCreated: 1519104560 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/FullScreenResolveMat.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: FullScreenResolveMat 10 | m_Shader: {fileID: 4800000, guid: bc16a10c8bf5c6b4ab776232855d9902, type: 3} 11 | m_ShaderKeywords: 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 | - _BlueNoise: 22 | m_Texture: {fileID: 2800000, guid: 3fcee8f28cd39be4ba3ea5299963507e, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _BumpMap: 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 | - _DetailMask: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailNormalMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _EmissionMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MainTex: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MetallicGlossMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _OcclusionMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _ParallaxMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | m_Floats: 62 | - _BumpScale: 1 63 | - _Cutoff: 0.5 64 | - _DetailNormalMapScale: 1 65 | - _DstBlend: 0 66 | - _GlossMapScale: 1 67 | - _Glossiness: 0.5 68 | - _GlossyReflections: 1 69 | - _Metallic: 0 70 | - _Mode: 0 71 | - _OcclusionStrength: 1 72 | - _Parallax: 0.02 73 | - _SmoothnessTextureChannel: 0 74 | - _SpecularHighlights: 1 75 | - _SrcBlend: 1 76 | - _UVSec: 0 77 | - _ZWrite: 1 78 | m_Colors: 79 | - _Color: {r: 1, g: 1, b: 1, a: 1} 80 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 81 | -------------------------------------------------------------------------------- /Assets/Materials/FullScreenResolveMat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 770f95e25cbbb7c468dddf886a4ba257 3 | timeCreated: 1518985529 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Glass.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: Glass 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 1 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 1, b: 1, a: 0} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Materials/Glass.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c67d44fa2b5b5594c89249383f5232fc 3 | timeCreated: 1519104617 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/GoldMetal.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: GoldMetal 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.532 64 | - _GlossyReflections: 1 65 | - _Metallic: 1 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 1, g: 0.80514705, b: 0.2205882, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Materials/GoldMetal.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c38605a0f2e8f4499929e4b9c4e4a95 3 | timeCreated: 1519104587 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Ground.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: Ground 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.736714, g: 0.78275865, b: 0, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Materials/Ground.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 264777252f417854c96ef26bc2f1cfb6 3 | timeCreated: 1519104544 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Light.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: Light 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.5882353, g: 0.7638409, b: 1, a: 1} 76 | - _EmissionColor: {r: 54.297, g: 54.297, b: 54.297, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Materials/Light.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 08b32fc036cab7340bd11f7b59f1cba3 3 | timeCreated: 1519109320 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Points.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: Points 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 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: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _InvFade: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Points.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e5ca9c02e0751da419ead5a0688f9b00 3 | timeCreated: 1519611091 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/RenderTextures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afb00c1e36747444b9699daed7db6711 3 | folderAsset: yes 4 | timeCreated: 1518985141 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/RenderTextures/AccumulatedColorTexture.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: AccumulatedColorTexture 9 | m_ImageContentsHash: 10 | serializedVersion: 2 11 | Hash: 00000000000000000000000000000000 12 | m_Width: 1024 13 | m_Height: 512 14 | m_AntiAliasing: 1 15 | m_DepthFormat: 0 16 | m_ColorFormat: 11 17 | m_MipMap: 1 18 | m_GenerateMips: 1 19 | m_SRGB: 0 20 | m_TextureSettings: 21 | serializedVersion: 2 22 | m_FilterMode: 1 23 | m_Aniso: 0 24 | m_MipBias: 0 25 | m_WrapU: 1 26 | m_WrapV: 1 27 | m_WrapW: 1 28 | m_Dimension: 2 29 | m_VolumeDepth: 1 30 | -------------------------------------------------------------------------------- /Assets/RenderTextures/AccumulatedColorTexture.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 428ba3f269cdf8c41a68d5466cd0d1a7 3 | timeCreated: 1518985161 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 8400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/RenderTextures/ComputeDebugTexture.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_Name: ComputeDebugTexture 9 | m_ImageContentsHash: 10 | serializedVersion: 2 11 | Hash: 00000000000000000000000000000000 12 | m_Width: 256 13 | m_Height: 256 14 | m_AntiAliasing: 1 15 | m_DepthFormat: 2 16 | m_ColorFormat: 0 17 | m_MipMap: 0 18 | m_GenerateMips: 1 19 | m_SRGB: 0 20 | m_TextureSettings: 21 | serializedVersion: 2 22 | m_FilterMode: 1 23 | m_Aniso: 0 24 | m_MipBias: 0 25 | m_WrapU: 1 26 | m_WrapV: 1 27 | m_WrapW: 1 28 | m_Dimension: 2 29 | m_VolumeDepth: 1 30 | -------------------------------------------------------------------------------- /Assets/RenderTextures/ComputeDebugTexture.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 41b548f68ad065e4bbde9540ced1f424 3 | timeCreated: 1520145857 4 | licenseType: Pro 5 | NativeFormatImporter: 6 | mainObjectFileID: 8400000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 75ee1da56cbbb0a49a8425273ea11421 3 | folderAsset: yes 4 | timeCreated: 1518985028 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/RayTracedSphere.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | using System.Collections; 16 | using System.Collections.Generic; 17 | using UnityEngine; 18 | 19 | public class RayTracedSphere : MonoBehaviour { 20 | // 21 | // Note: These values must match the values kMaterialXxx constants in Shading.cginc. 22 | // 23 | public enum MaterialRt { 24 | Invalid = 0, 25 | Lambertian = 1, 26 | Metal = 2, 27 | Dielectric = 3, 28 | } 29 | 30 | public MaterialRt Material; 31 | 32 | [Range(.01f, 1.5f)] 33 | public float ColorMultiplier = 1.0f; 34 | 35 | private Matrix4x4 m_lastTransform = Matrix4x4.identity; 36 | private float m_lastColorMultiplier; 37 | private Color m_lastColor; 38 | 39 | public RayTracer.Sphere GetSphere() { 40 | // Careful to handle colorspaces here. 41 | var albedo = GetComponent().material.color.linear; 42 | albedo *= ColorMultiplier; 43 | 44 | var sphere = new RayTracer.Sphere(); 45 | sphere.Albedo = new Vector3(albedo.r, albedo.g, albedo.b); 46 | sphere.Radius = transform.localScale.x / 2; 47 | sphere.Center = transform.position; 48 | sphere.Material = (int)Material; 49 | 50 | return sphere; 51 | } 52 | 53 | void OnEnable() { 54 | RayTracer.Instance.NotifySceneChanged(); 55 | m_lastTransform = transform.localToWorldMatrix; 56 | } 57 | 58 | void OnDisable() { 59 | if (RayTracer.Instance != null) { 60 | RayTracer.Instance.NotifySceneChanged(); 61 | } 62 | } 63 | 64 | void Update() { 65 | if (m_lastTransform != transform.localToWorldMatrix 66 | || m_lastColorMultiplier != ColorMultiplier 67 | || m_lastColor != GetComponent().material.color) { 68 | m_lastColorMultiplier = ColorMultiplier; 69 | m_lastColor = GetComponent().material.color; 70 | m_lastTransform = transform.localToWorldMatrix; 71 | RayTracer.Instance.NotifySceneChanged(); 72 | } 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /Assets/Scripts/RayTracedSphere.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fab6d4b34798f647a815dfc7750c675 3 | timeCreated: 1519103537 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Scripts/RayTracer.cs: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | using System.Collections; 16 | using System.Collections.Generic; 17 | using System.Linq; 18 | using UnityEngine; 19 | using System; 20 | 21 | public class RayTracer : MonoBehaviour { 22 | 23 | public static RayTracer Instance { get; private set; } 24 | 25 | // The main accumulation texture. 26 | public RenderTexture MainTexture; 27 | 28 | public ComputeShader RayTraceKernels; 29 | public Material FullScreenResolve; 30 | 31 | [Range(0.001f, 100f)] 32 | public float FocusDistance; 33 | 34 | // If set, FocusDistance is ignored and instead the FocusDistance is based on the FocusObject. 35 | public Transform FocusObject; 36 | 37 | [Range(0.0001f, 2.5f)] 38 | public float Aperture; 39 | 40 | [Range(1, 64)] 41 | public int MaxBounces = 1; 42 | 43 | public MeshFilter SphericalFibDebugMesh; 44 | 45 | 46 | // Sample Count is only public for debugging. 47 | // In non-sample code this should be a read-only label. 48 | public int m_sampleCount; 49 | 50 | // -------------------------------------------------------------------------------------------- // 51 | // Private Member Variables. 52 | // -------------------------------------------------------------------------------------------- // 53 | 54 | // Dirty flag for scene sync. 55 | private bool m_sceneChanged = false; 56 | 57 | // The maximum number of bounces before terminating a ray. 58 | private int m_maxBounces = 1; 59 | 60 | private float m_lastAperture = -1; 61 | private float m_lastFocusDistance = -1; 62 | private Matrix4x4 m_lastCam; 63 | private Matrix4x4 m_lastProj; 64 | 65 | private int m_initCameraRaysKernel; 66 | private int m_rayTraceKernel; 67 | private int m_normalizeSamplesKernel; 68 | 69 | private RenderTexture m_accumulatedImage; 70 | 71 | private ComputeBuffer m_spheresBuffer; 72 | private Sphere[] m_sphereData; 73 | 74 | private ComputeBuffer m_raysBuffer; 75 | 76 | private System.Random m_rng = new System.Random(); 77 | 78 | // The number of super sampled rays to schedule. 79 | private int m_superSamplingFactor = 8; 80 | 81 | // The number of bounces per pixel to schedule. 82 | // This number will be multiplied by m_superSamplingFactor on Dispatch. 83 | private int m_bouncesPerPixel = 8; 84 | 85 | private ComputeBuffer m_fibSamples; 86 | 87 | public struct Ray { 88 | public Vector3 Origin; 89 | public Vector3 Direction; 90 | public Vector3 Color; 91 | public int Bounces; 92 | } 93 | 94 | public struct Sphere { 95 | public Vector3 Center; 96 | public float Radius; 97 | public int Material; 98 | public Vector3 Albedo; 99 | } 100 | 101 | void ReclaimResources() { 102 | if (m_accumulatedImage != null) { 103 | RenderTexture.Destroy(m_accumulatedImage); 104 | m_accumulatedImage = null; 105 | } 106 | if (m_spheresBuffer != null) { 107 | m_spheresBuffer.Dispose(); 108 | m_spheresBuffer = null; 109 | } 110 | if (m_raysBuffer != null) { 111 | m_raysBuffer.Dispose(); 112 | m_raysBuffer = null; 113 | } 114 | if (m_fibSamples != null) { 115 | m_fibSamples.Dispose(); 116 | m_fibSamples = null; 117 | } 118 | } 119 | 120 | void SphericalFib(ref Vector3[] output) { 121 | double n = output.Length / 2; 122 | double pi = Mathf.PI; 123 | double dphi = pi * (3 - Math.Sqrt(5)); 124 | double phi = 0; 125 | double dz = 1 / n; 126 | double z = 1 - dz / 2.0f; 127 | int[] indices = new int[output.Length]; 128 | 129 | for (int j = 0; j < n; j++) { 130 | double zj = z; 131 | double thetaj = Math.Acos(zj); 132 | double phij = phi % (2 * pi); 133 | z = z - dz; 134 | phi = phi + dphi; 135 | 136 | // spherical -> cartesian, with r = 1 137 | output[j] = new Vector3((float)(Math.Cos(phij) * Math.Sin(thetaj)), 138 | (float)(zj), 139 | (float)(Math.Sin(thetaj) * Math.Sin(phij))); 140 | indices[j] = j; 141 | } 142 | 143 | if (SphericalFibDebugMesh == null) { 144 | return; 145 | } 146 | 147 | // The code above only covers a hemisphere, this mirrors it into a sphere. 148 | for (int i = 0; i < n; i++) { 149 | var vz = output[i]; 150 | vz.y *= -1; 151 | output[output.Length - i - 1] = vz; 152 | indices[i + output.Length / 2] = i + output.Length / 2; 153 | } 154 | 155 | var m = new Mesh(); 156 | m.vertices = output; 157 | m.SetIndices(indices, MeshTopology.Points, 0); 158 | SphericalFibDebugMesh.mesh = m; 159 | } 160 | 161 | void Awake() { 162 | Instance = this; 163 | } 164 | 165 | public void NotifySceneChanged() { 166 | // Setup the scene. 167 | var objects = GameObject.FindObjectsOfType(); 168 | 169 | bool reallocate = false; 170 | if (m_sphereData == null || m_sphereData.Length != objects.Length) { 171 | m_sphereData = new Sphere[objects.Length]; 172 | reallocate = true; 173 | } 174 | 175 | for (int i = 0; i < objects.Length; i++) { 176 | var obj = objects[i]; 177 | m_sphereData[i] = obj.GetSphere(); 178 | } 179 | 180 | if (reallocate) { 181 | // Setup GPU memory for the scene. 182 | const int kFloatsPerSphere = 8; 183 | if (m_spheresBuffer != null) { 184 | m_spheresBuffer.Dispose(); 185 | m_spheresBuffer = null; 186 | } 187 | 188 | if (m_sphereData.Length > 0) { 189 | m_spheresBuffer = new ComputeBuffer(m_sphereData.Length, sizeof(float) * kFloatsPerSphere); 190 | RayTraceKernels.SetBuffer(m_rayTraceKernel, "_Spheres", m_spheresBuffer); 191 | } 192 | } 193 | 194 | if (m_spheresBuffer != null) { 195 | m_spheresBuffer.SetData(m_sphereData); 196 | } 197 | 198 | m_sceneChanged = true; 199 | } 200 | 201 | void OnEnable() { 202 | // Force an update. 203 | m_lastAperture = -1; 204 | 205 | m_sampleCount = 0; 206 | 207 | // Make sure we start from a clean slate. 208 | // Under normal circumstances, this does nothing. 209 | ReclaimResources(); 210 | 211 | // Clone the main texture example texture, but enable it to be written from compute. 212 | m_accumulatedImage = new RenderTexture(MainTexture.descriptor); 213 | m_accumulatedImage.enableRandomWrite = true; 214 | m_accumulatedImage.Create(); 215 | 216 | RenderTexture.active = m_accumulatedImage; 217 | GL.Clear(false, true, new Color(0, 0, 0, 0)); 218 | RenderTexture.active = null; 219 | 220 | // Local constants make the next lines signfinicantly more readable. 221 | const int kBytesPerFloat = sizeof(float); 222 | const int kFloatsPerRay = 13; 223 | int numPixels = m_accumulatedImage.width * m_accumulatedImage.height; 224 | int numRays = numPixels * m_superSamplingFactor; 225 | 226 | // IMPORTANT NOTE: the byte size below must match the shader, not C#! In this case they match. 227 | m_raysBuffer = new ComputeBuffer(numRays, 228 | kBytesPerFloat * kFloatsPerRay + sizeof(int) + sizeof(int), 229 | ComputeBufferType.Counter); 230 | 231 | var samples = new Vector3[4096]; 232 | SphericalFib(ref samples); 233 | m_fibSamples = new ComputeBuffer(samples.Length, 3 * kBytesPerFloat); 234 | m_fibSamples.SetData(samples); 235 | 236 | // Populate the scene. 237 | NotifySceneChanged(); 238 | 239 | // Setup the RayTrace kernel. 240 | m_rayTraceKernel = RayTraceKernels.FindKernel("RayTrace"); 241 | RayTraceKernels.SetTexture(m_rayTraceKernel, "_AccumulatedImage", m_accumulatedImage); 242 | RayTraceKernels.SetBuffer(m_rayTraceKernel, "_Spheres", m_spheresBuffer); 243 | RayTraceKernels.SetBuffer(m_rayTraceKernel, "_Rays", m_raysBuffer); 244 | RayTraceKernels.SetBuffer(m_rayTraceKernel, "_HemisphereSamples", m_fibSamples); 245 | 246 | // Setup the InitCameraRays kernel. 247 | m_initCameraRaysKernel = RayTraceKernels.FindKernel("InitCameraRays"); 248 | RayTraceKernels.SetBuffer(m_initCameraRaysKernel, "_Rays", m_raysBuffer); 249 | RayTraceKernels.SetBuffer(m_initCameraRaysKernel, "_Spheres", m_spheresBuffer); 250 | RayTraceKernels.SetTexture(m_initCameraRaysKernel, "_AccumulatedImage", m_accumulatedImage); 251 | RayTraceKernels.SetBuffer(m_initCameraRaysKernel, "_HemisphereSamples", m_fibSamples); 252 | 253 | // Setup the NormalizeSamples kernel. 254 | m_normalizeSamplesKernel = RayTraceKernels.FindKernel("NormalizeSamples"); 255 | RayTraceKernels.SetBuffer(m_normalizeSamplesKernel, "_Rays", m_raysBuffer); 256 | RayTraceKernels.SetBuffer(m_normalizeSamplesKernel, "_Spheres", m_spheresBuffer); 257 | RayTraceKernels.SetTexture(m_normalizeSamplesKernel, "_AccumulatedImage", m_accumulatedImage); 258 | RayTraceKernels.SetBuffer(m_normalizeSamplesKernel, "_HemisphereSamples", m_fibSamples); 259 | 260 | // DOF parameter defaults. 261 | RayTraceKernels.SetFloat("_Aperture", 2.0f); 262 | RayTraceKernels.SetFloat("_FocusDistance", 5.0f); 263 | 264 | // Assign the texture to the main materail, to blit to screen. 265 | FullScreenResolve.mainTexture = m_accumulatedImage; 266 | } 267 | 268 | void OnDisable() { 269 | ReclaimResources(); 270 | } 271 | 272 | void SetMatrix(ComputeShader shader, string name, Matrix4x4 matrix) { 273 | float[] matrixFloats = new float[] { 274 | matrix[0,0], matrix[1, 0], matrix[2, 0], matrix[3, 0], 275 | matrix[0,1], matrix[1, 1], matrix[2, 1], matrix[3, 1], 276 | matrix[0,2], matrix[1, 2], matrix[2, 2], matrix[3, 2], 277 | matrix[0,3], matrix[1, 3], matrix[2, 3], matrix[3, 3] 278 | }; 279 | shader.SetFloats(name, matrixFloats); 280 | } 281 | 282 | void OnRenderObject() { 283 | if (FocusObject != null) { 284 | FocusDistance = (transform.position - FocusObject.position).magnitude; 285 | transform.LookAt(FocusObject.position); 286 | } 287 | 288 | var camInverse = Camera.main.cameraToWorldMatrix; 289 | var ProjInverse = Camera.main.projectionMatrix.inverse; 290 | 291 | RayTraceKernels.SetFloat("_Seed01", (float)m_rng.NextDouble()); 292 | RayTraceKernels.SetFloat("_R0", (float)m_rng.NextDouble()); 293 | RayTraceKernels.SetFloat("_R1", (float)m_rng.NextDouble()); 294 | RayTraceKernels.SetFloat("_R2", (float)m_rng.NextDouble()); 295 | 296 | if (m_sceneChanged || m_lastAperture != Aperture || m_lastFocusDistance != FocusDistance || m_maxBounces != MaxBounces || camInverse != m_lastCam || ProjInverse != m_lastProj) { 297 | SetMatrix(RayTraceKernels, "_Camera", Camera.main.worldToCameraMatrix); 298 | SetMatrix(RayTraceKernels, "_CameraI", Camera.main.cameraToWorldMatrix); 299 | SetMatrix(RayTraceKernels, "_ProjectionI", ProjInverse); 300 | SetMatrix(RayTraceKernels, "_Projection", Camera.main.projectionMatrix); 301 | RayTraceKernels.SetFloat("_FocusDistance", FocusDistance); 302 | RayTraceKernels.SetFloat("_Aperture", Aperture); 303 | 304 | m_sceneChanged = false; 305 | m_lastAperture = Aperture; 306 | m_lastFocusDistance = FocusDistance; 307 | m_lastCam = camInverse; 308 | m_lastProj = ProjInverse; 309 | var rayStart = new Vector3(0, 0, 0); 310 | var rayEnd = new Vector3(0, 0, 1); 311 | rayStart = Camera.main.projectionMatrix.inverse.MultiplyPoint(rayStart); 312 | rayEnd = Camera.main.projectionMatrix.inverse.MultiplyPoint(rayEnd); 313 | 314 | m_maxBounces = MaxBounces; 315 | m_sampleCount = 0; 316 | 317 | RayTraceKernels.Dispatch(m_normalizeSamplesKernel, 318 | m_accumulatedImage.width / 8, 319 | m_accumulatedImage.height / 8, 320 | m_superSamplingFactor); 321 | } 322 | 323 | m_sampleCount++; 324 | RayTraceKernels.Dispatch(m_initCameraRaysKernel, 325 | m_accumulatedImage.width / 8, 326 | m_accumulatedImage.height / 8, m_superSamplingFactor); 327 | 328 | 329 | float t = Time.time; 330 | RayTraceKernels.SetVector("_Time", new Vector4(t / 20, t, t * 2, t * 3)); 331 | RayTraceKernels.SetInt("_MaxBounces", MaxBounces); 332 | 333 | RayTraceKernels.Dispatch(m_rayTraceKernel, 334 | m_accumulatedImage.width / 8, 335 | m_accumulatedImage.height / 8, 336 | m_superSamplingFactor * m_bouncesPerPixel); 337 | } 338 | 339 | void OnRenderImage(RenderTexture source, RenderTexture dest) { 340 | // Resolve the final color directly from the ray accumColor. 341 | FullScreenResolve.SetBuffer("_Rays", m_raysBuffer); 342 | 343 | // Blit the rays into the accumulated image. 344 | // This isn't necessary, though it implicitly applies a box filter to the accumulated color, 345 | // which reduces aliasing artifacts when the viewport size doesn't match the underlying texture 346 | // size (should only be a problem in-editor). 347 | FullScreenResolve.SetVector("_AccumulatedImageSize", 348 | new Vector2(m_accumulatedImage.width, m_accumulatedImage.height)); 349 | Graphics.Blit(dest, m_accumulatedImage, FullScreenResolve); 350 | 351 | // Simple copy from accumulated image to viewport, the filter is applied here. 352 | // This extra copy and the associated texture could be skipped by filtering the ray colors 353 | // directly in the full screen resolve shader. 354 | Graphics.Blit(m_accumulatedImage, dest); 355 | } 356 | } 357 | -------------------------------------------------------------------------------- /Assets/Scripts/RayTracer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 83a2285699a2dd44080bf68b466d6898 3 | timeCreated: 1518985112 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d79d9facd06f7c2459d46e32452a0b9e 3 | folderAsset: yes 4 | timeCreated: 1518985457 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Shaders/FullScreenResolve.shader: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Google Inc. All rights reserved. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | Shader "GpuRayTracing/FullScreenResolve" 16 | { 17 | Properties 18 | { 19 | } 20 | SubShader 21 | { 22 | // No culling or depth 23 | Cull Off ZWrite Off ZTest Always 24 | Tags {"Queue" = "Transparent" } 25 | 26 | Pass 27 | { 28 | CGPROGRAM 29 | #pragma vertex vert 30 | #pragma fragment frag 31 | #pragma target 5.0 32 | 33 | #include "UnityCG.cginc" 34 | #include "../Kernels/Structures.cginc" 35 | 36 | StructuredBuffer _Rays; 37 | 38 | struct appdata 39 | { 40 | float4 vertex : POSITION; 41 | float2 uv : TEXCOORD0; 42 | }; 43 | 44 | struct v2f 45 | { 46 | float2 uv : TEXCOORD0; 47 | float4 vertex : SV_POSITION; 48 | }; 49 | 50 | v2f vert (appdata v) 51 | { 52 | v2f o; 53 | o.vertex = UnityObjectToClipPos(v.vertex); 54 | o.uv = v.uv; 55 | return o; 56 | } 57 | 58 | float2 _AccumulatedImageSize; 59 | 60 | float4 frag (v2f i) : SV_Target { 61 | float2 size = _AccumulatedImageSize; 62 | int2 xy = i.uv * size; 63 | 64 | uint rayCount, stride; 65 | _Rays.GetDimensions(rayCount, stride); 66 | 67 | float4 color = float4(0, 0, 0, 0); 68 | 69 | for (int z = 0; z < 8; z++) { 70 | int rayIndex = xy.x * size.y 71 | + xy.y 72 | + size.x * size.y * (z); 73 | 74 | color += _Rays[rayIndex % rayCount].accumColor; 75 | } 76 | 77 | // Note that the blur from the blog post is no longer applied, but could 78 | // be done here or in the transfer from accumulated image to screen. 79 | 80 | // Normalize by sample count. 81 | return color / color.a; 82 | } 83 | ENDCG 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /Assets/Shaders/FullScreenResolve.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc16a10c8bf5c6b4ab776232855d9902 3 | timeCreated: 1518985472 4 | licenseType: Pro 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We'd love to accept your patches and contributions to this project. There are 4 | just a few small guidelines you need to follow. 5 | 6 | ## Contributor License Agreement 7 | 8 | Contributions to this project must be accompanied by a Contributor License 9 | Agreement. You (or your employer) retain the copyright to your contribution, 10 | this simply gives us permission to use and redistribute your contributions as 11 | part of the project. Head over to to see 12 | your current agreements on file or to sign a new one. 13 | 14 | You generally only need to submit a CLA once, so if you've already submitted one 15 | (even if it was for a different project), you probably don't need to do it 16 | again. 17 | 18 | ## Code reviews 19 | 20 | All submissions, including submissions by project members, require review. We 21 | use GitHub pull requests for this purpose. Consult 22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more 23 | information on using pull requests. 24 | 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /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: 3 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_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | m_AutoSimulation: 1 20 | -------------------------------------------------------------------------------- /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: 4 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 0 11 | m_SpritePackerPaddingPower: 1 12 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 13 | m_ProjectGenerationRootNamespace: 14 | m_UserGeneratedProjectSuffix: 15 | m_CollabEditorSettings: 16 | inProgressEnabled: 1 17 | -------------------------------------------------------------------------------- /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 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /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 | m_SettingNames: 89 | - Humanoid 90 | -------------------------------------------------------------------------------- /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_AlwaysShowColliders: 0 28 | m_ShowColliderSleep: 1 29 | m_ShowColliderContacts: 0 30 | m_ShowColliderAABB: 0 31 | m_ContactArrowScale: 0.2 32 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 33 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 34 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 35 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 36 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 37 | -------------------------------------------------------------------------------- /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: 12 7 | productGUID: b0bfe8b75a0468143a9def5e5d8e0f65 8 | AndroidProfiler: 0 9 | defaultScreenOrientation: 4 10 | targetDevice: 2 11 | useOnDemandResources: 0 12 | accelerometerFrequency: 60 13 | companyName: DefaultCompany 14 | productName: RayTracingInOneWeekend 15 | defaultCursor: {fileID: 0} 16 | cursorHotspot: {x: 0, y: 0} 17 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 18 | m_ShowUnitySplashScreen: 1 19 | m_ShowUnitySplashLogo: 1 20 | m_SplashScreenOverlayOpacity: 1 21 | m_SplashScreenAnimation: 1 22 | m_SplashScreenLogoStyle: 1 23 | m_SplashScreenDrawMode: 0 24 | m_SplashScreenBackgroundAnimationZoom: 1 25 | m_SplashScreenLogoAnimationZoom: 1 26 | m_SplashScreenBackgroundLandscapeAspect: 1 27 | m_SplashScreenBackgroundPortraitAspect: 1 28 | m_SplashScreenBackgroundLandscapeUvs: 29 | serializedVersion: 2 30 | x: 0 31 | y: 0 32 | width: 1 33 | height: 1 34 | m_SplashScreenBackgroundPortraitUvs: 35 | serializedVersion: 2 36 | x: 0 37 | y: 0 38 | width: 1 39 | height: 1 40 | m_SplashScreenLogos: [] 41 | m_SplashScreenBackgroundLandscape: {fileID: 0} 42 | m_SplashScreenBackgroundPortrait: {fileID: 0} 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 1 51 | m_MTRendering: 1 52 | m_MobileMTRendering: 0 53 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 54 | iosShowActivityIndicatorOnLoading: -1 55 | androidShowActivityIndicatorOnLoading: -1 56 | tizenShowActivityIndicatorOnLoading: -1 57 | iosAppInBackgroundBehavior: 0 58 | displayResolutionDialog: 2 59 | iosAllowHTTPDownload: 1 60 | allowedAutorotateToPortrait: 1 61 | allowedAutorotateToPortraitUpsideDown: 1 62 | allowedAutorotateToLandscapeRight: 1 63 | allowedAutorotateToLandscapeLeft: 1 64 | useOSAutorotation: 1 65 | use32BitDisplayBuffer: 1 66 | disableDepthAndStencilBuffers: 0 67 | defaultIsFullScreen: 0 68 | defaultIsNativeResolution: 1 69 | runInBackground: 1 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | Force IOS Speakers When Recording: 0 74 | submitAnalytics: 1 75 | usePlayerLog: 1 76 | bakeCollisionMeshes: 0 77 | forceSingleInstance: 1 78 | resizableWindow: 1 79 | useMacAppStoreValidation: 0 80 | macAppStoreCategory: public.app-category.games 81 | gpuSkinning: 0 82 | graphicsJobs: 0 83 | xboxPIXTextureCapture: 0 84 | xboxEnableAvatar: 0 85 | xboxEnableKinect: 0 86 | xboxEnableKinectAutoTracking: 0 87 | xboxEnableFitness: 0 88 | visibleInBackground: 1 89 | allowFullscreenSwitch: 0 90 | graphicsJobMode: 0 91 | macFullscreenMode: 2 92 | d3d9FullscreenMode: 1 93 | d3d11FullscreenMode: 1 94 | xboxSpeechDB: 0 95 | xboxEnableHeadOrientation: 0 96 | xboxEnableGuest: 0 97 | xboxEnablePIXSampling: 0 98 | n3dsDisableStereoscopicView: 0 99 | n3dsEnableSharedListOpt: 1 100 | n3dsEnableVSync: 0 101 | ignoreAlphaClear: 0 102 | xboxOneResolution: 0 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | videoMemoryForVertexBuffers: 0 107 | psp2PowerMode: 0 108 | psp2AcquireBGM: 1 109 | wiiUTVResolution: 0 110 | wiiUGamePadMSAA: 1 111 | wiiUSupportsNunchuk: 0 112 | wiiUSupportsClassicController: 0 113 | wiiUSupportsBalanceBoard: 0 114 | wiiUSupportsMotionPlus: 0 115 | wiiUSupportsProController: 0 116 | wiiUAllowScreenCapture: 1 117 | wiiUControllerCount: 0 118 | m_SupportedAspectRatios: 119 | 4:3: 1 120 | 5:4: 1 121 | 16:10: 1 122 | 16:9: 1 123 | Others: 1 124 | bundleVersion: 1.0 125 | preloadedAssets: [] 126 | metroInputSource: 0 127 | m_HolographicPauseOnTrackingLoss: 1 128 | xboxOneDisableKinectGpuReservation: 0 129 | xboxOneEnable7thCore: 0 130 | vrSettings: 131 | cardboard: 132 | depthFormat: 0 133 | enableTransitionView: 0 134 | daydream: 135 | depthFormat: 0 136 | useSustainedPerformanceMode: 0 137 | hololens: 138 | depthFormat: 1 139 | protectGraphicsMemory: 0 140 | useHDRDisplay: 0 141 | targetPixelDensity: 0 142 | resolutionScalingMode: 0 143 | applicationIdentifier: {} 144 | buildNumber: {} 145 | AndroidBundleVersionCode: 1 146 | AndroidMinSdkVersion: 16 147 | AndroidTargetSdkVersion: 0 148 | AndroidPreferredInstallLocation: 1 149 | aotOptions: 150 | stripEngineCode: 1 151 | iPhoneStrippingLevel: 0 152 | iPhoneScriptCallOptimization: 0 153 | ForceInternetPermission: 0 154 | ForceSDCardPermission: 0 155 | CreateWallpaper: 0 156 | APKExpansionFiles: 0 157 | keepLoadedShadersAlive: 0 158 | StripUnusedMeshComponents: 0 159 | VertexChannelCompressionMask: 160 | serializedVersion: 2 161 | m_Bits: 238 162 | iPhoneSdkVersion: 988 163 | iOSTargetOSVersionString: 164 | tvOSSdkVersion: 0 165 | tvOSRequireExtendedGameController: 0 166 | tvOSTargetOSVersionString: 167 | uIPrerenderedIcon: 0 168 | uIRequiresPersistentWiFi: 0 169 | uIRequiresFullScreen: 1 170 | uIStatusBarHidden: 1 171 | uIExitOnSuspend: 0 172 | uIStatusBarStyle: 0 173 | iPhoneSplashScreen: {fileID: 0} 174 | iPhoneHighResSplashScreen: {fileID: 0} 175 | iPhoneTallHighResSplashScreen: {fileID: 0} 176 | iPhone47inSplashScreen: {fileID: 0} 177 | iPhone55inPortraitSplashScreen: {fileID: 0} 178 | iPhone55inLandscapeSplashScreen: {fileID: 0} 179 | iPadPortraitSplashScreen: {fileID: 0} 180 | iPadHighResPortraitSplashScreen: {fileID: 0} 181 | iPadLandscapeSplashScreen: {fileID: 0} 182 | iPadHighResLandscapeSplashScreen: {fileID: 0} 183 | appleTVSplashScreen: {fileID: 0} 184 | tvOSSmallIconLayers: [] 185 | tvOSLargeIconLayers: [] 186 | tvOSTopShelfImageLayers: [] 187 | tvOSTopShelfImageWideLayers: [] 188 | iOSLaunchScreenType: 0 189 | iOSLaunchScreenPortrait: {fileID: 0} 190 | iOSLaunchScreenLandscape: {fileID: 0} 191 | iOSLaunchScreenBackgroundColor: 192 | serializedVersion: 2 193 | rgba: 0 194 | iOSLaunchScreenFillPct: 100 195 | iOSLaunchScreenSize: 100 196 | iOSLaunchScreenCustomXibPath: 197 | iOSLaunchScreeniPadType: 0 198 | iOSLaunchScreeniPadImage: {fileID: 0} 199 | iOSLaunchScreeniPadBackgroundColor: 200 | serializedVersion: 2 201 | rgba: 0 202 | iOSLaunchScreeniPadFillPct: 100 203 | iOSLaunchScreeniPadSize: 100 204 | iOSLaunchScreeniPadCustomXibPath: 205 | iOSDeviceRequirements: [] 206 | iOSURLSchemes: [] 207 | iOSBackgroundModes: 0 208 | iOSMetalForceHardShadows: 0 209 | metalEditorSupport: 1 210 | metalAPIValidation: 1 211 | iOSRenderExtraFrameOnPause: 0 212 | appleDeveloperTeamID: 213 | iOSManualSigningProvisioningProfileID: 214 | tvOSManualSigningProvisioningProfileID: 215 | appleEnableAutomaticSigning: 0 216 | AndroidTargetDevice: 0 217 | AndroidSplashScreenScale: 0 218 | androidSplashScreen: {fileID: 0} 219 | AndroidKeystoreName: 220 | AndroidKeyaliasName: 221 | AndroidTVCompatibility: 1 222 | AndroidIsGame: 1 223 | androidEnableBanner: 1 224 | m_AndroidBanners: 225 | - width: 320 226 | height: 180 227 | banner: {fileID: 0} 228 | androidGamepadSupportLevel: 0 229 | resolutionDialogBanner: {fileID: 0} 230 | m_BuildTargetIcons: [] 231 | m_BuildTargetBatching: [] 232 | m_BuildTargetGraphicsAPIs: 233 | - m_BuildTarget: WindowsStandaloneSupport 234 | m_APIs: 02000000 235 | m_Automatic: 0 236 | m_BuildTargetVRSettings: [] 237 | openGLRequireES31: 0 238 | openGLRequireES31AEP: 0 239 | webPlayerTemplate: APPLICATION:Default 240 | m_TemplateCustomTags: {} 241 | wiiUTitleID: 0005000011000000 242 | wiiUGroupID: 00010000 243 | wiiUCommonSaveSize: 4096 244 | wiiUAccountSaveSize: 2048 245 | wiiUOlvAccessKey: 0 246 | wiiUTinCode: 0 247 | wiiUJoinGameId: 0 248 | wiiUJoinGameModeMask: 0000000000000000 249 | wiiUCommonBossSize: 0 250 | wiiUAccountBossSize: 0 251 | wiiUAddOnUniqueIDs: [] 252 | wiiUMainThreadStackSize: 3072 253 | wiiULoaderThreadStackSize: 1024 254 | wiiUSystemHeapSize: 128 255 | wiiUTVStartupScreen: {fileID: 0} 256 | wiiUGamePadStartupScreen: {fileID: 0} 257 | wiiUDrcBufferDisabled: 0 258 | wiiUProfilerLibPath: 259 | playModeTestRunnerEnabled: 0 260 | actionOnDotNetUnhandledException: 1 261 | enableInternalProfiler: 0 262 | logObjCUncaughtExceptions: 1 263 | enableCrashReportAPI: 0 264 | cameraUsageDescription: 265 | locationUsageDescription: 266 | microphoneUsageDescription: 267 | switchNetLibKey: 268 | switchSocketMemoryPoolSize: 6144 269 | switchSocketAllocatorPoolSize: 128 270 | switchSocketConcurrencyLimit: 14 271 | switchScreenResolutionBehavior: 2 272 | switchUseCPUProfiler: 0 273 | switchApplicationID: 0x01004b9000490000 274 | switchNSODependencies: 275 | switchTitleNames_0: 276 | switchTitleNames_1: 277 | switchTitleNames_2: 278 | switchTitleNames_3: 279 | switchTitleNames_4: 280 | switchTitleNames_5: 281 | switchTitleNames_6: 282 | switchTitleNames_7: 283 | switchTitleNames_8: 284 | switchTitleNames_9: 285 | switchTitleNames_10: 286 | switchTitleNames_11: 287 | switchPublisherNames_0: 288 | switchPublisherNames_1: 289 | switchPublisherNames_2: 290 | switchPublisherNames_3: 291 | switchPublisherNames_4: 292 | switchPublisherNames_5: 293 | switchPublisherNames_6: 294 | switchPublisherNames_7: 295 | switchPublisherNames_8: 296 | switchPublisherNames_9: 297 | switchPublisherNames_10: 298 | switchPublisherNames_11: 299 | switchIcons_0: {fileID: 0} 300 | switchIcons_1: {fileID: 0} 301 | switchIcons_2: {fileID: 0} 302 | switchIcons_3: {fileID: 0} 303 | switchIcons_4: {fileID: 0} 304 | switchIcons_5: {fileID: 0} 305 | switchIcons_6: {fileID: 0} 306 | switchIcons_7: {fileID: 0} 307 | switchIcons_8: {fileID: 0} 308 | switchIcons_9: {fileID: 0} 309 | switchIcons_10: {fileID: 0} 310 | switchIcons_11: {fileID: 0} 311 | switchSmallIcons_0: {fileID: 0} 312 | switchSmallIcons_1: {fileID: 0} 313 | switchSmallIcons_2: {fileID: 0} 314 | switchSmallIcons_3: {fileID: 0} 315 | switchSmallIcons_4: {fileID: 0} 316 | switchSmallIcons_5: {fileID: 0} 317 | switchSmallIcons_6: {fileID: 0} 318 | switchSmallIcons_7: {fileID: 0} 319 | switchSmallIcons_8: {fileID: 0} 320 | switchSmallIcons_9: {fileID: 0} 321 | switchSmallIcons_10: {fileID: 0} 322 | switchSmallIcons_11: {fileID: 0} 323 | switchManualHTML: 324 | switchAccessibleURLs: 325 | switchLegalInformation: 326 | switchMainThreadStackSize: 1048576 327 | switchPresenceGroupId: 328 | switchLogoHandling: 0 329 | switchReleaseVersion: 0 330 | switchDisplayVersion: 1.0.0 331 | switchStartupUserAccount: 0 332 | switchTouchScreenUsage: 0 333 | switchSupportedLanguagesMask: 0 334 | switchLogoType: 0 335 | switchApplicationErrorCodeCategory: 336 | switchUserAccountSaveDataSize: 0 337 | switchUserAccountSaveDataJournalSize: 0 338 | switchApplicationAttribute: 0 339 | switchCardSpecSize: -1 340 | switchCardSpecClock: -1 341 | switchRatingsMask: 0 342 | switchRatingsInt_0: 0 343 | switchRatingsInt_1: 0 344 | switchRatingsInt_2: 0 345 | switchRatingsInt_3: 0 346 | switchRatingsInt_4: 0 347 | switchRatingsInt_5: 0 348 | switchRatingsInt_6: 0 349 | switchRatingsInt_7: 0 350 | switchRatingsInt_8: 0 351 | switchRatingsInt_9: 0 352 | switchRatingsInt_10: 0 353 | switchRatingsInt_11: 0 354 | switchLocalCommunicationIds_0: 355 | switchLocalCommunicationIds_1: 356 | switchLocalCommunicationIds_2: 357 | switchLocalCommunicationIds_3: 358 | switchLocalCommunicationIds_4: 359 | switchLocalCommunicationIds_5: 360 | switchLocalCommunicationIds_6: 361 | switchLocalCommunicationIds_7: 362 | switchParentalControl: 0 363 | switchAllowsScreenshot: 1 364 | switchDataLossConfirmation: 0 365 | switchSupportedNpadStyles: 3 366 | switchSocketConfigEnabled: 0 367 | switchTcpInitialSendBufferSize: 32 368 | switchTcpInitialReceiveBufferSize: 64 369 | switchTcpAutoSendBufferSizeMax: 256 370 | switchTcpAutoReceiveBufferSizeMax: 256 371 | switchUdpSendBufferSize: 9 372 | switchUdpReceiveBufferSize: 42 373 | switchSocketBufferEfficiency: 4 374 | switchSocketInitializeEnabled: 1 375 | switchNetworkInterfaceManagerInitializeEnabled: 1 376 | switchPlayerConnectionEnabled: 1 377 | ps4NPAgeRating: 12 378 | ps4NPTitleSecret: 379 | ps4NPTrophyPackPath: 380 | ps4ParentalLevel: 11 381 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 382 | ps4Category: 0 383 | ps4MasterVersion: 01.00 384 | ps4AppVersion: 01.00 385 | ps4AppType: 0 386 | ps4ParamSfxPath: 387 | ps4VideoOutPixelFormat: 0 388 | ps4VideoOutInitialWidth: 1920 389 | ps4VideoOutBaseModeInitialWidth: 1920 390 | ps4VideoOutReprojectionRate: 120 391 | ps4PronunciationXMLPath: 392 | ps4PronunciationSIGPath: 393 | ps4BackgroundImagePath: 394 | ps4StartupImagePath: 395 | ps4SaveDataImagePath: 396 | ps4SdkOverride: 397 | ps4BGMPath: 398 | ps4ShareFilePath: 399 | ps4ShareOverlayImagePath: 400 | ps4PrivacyGuardImagePath: 401 | ps4NPtitleDatPath: 402 | ps4RemotePlayKeyAssignment: -1 403 | ps4RemotePlayKeyMappingDir: 404 | ps4PlayTogetherPlayerCount: 0 405 | ps4EnterButtonAssignment: 1 406 | ps4ApplicationParam1: 0 407 | ps4ApplicationParam2: 0 408 | ps4ApplicationParam3: 0 409 | ps4ApplicationParam4: 0 410 | ps4DownloadDataSize: 0 411 | ps4GarlicHeapSize: 2048 412 | ps4ProGarlicHeapSize: 2560 413 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 414 | ps4pnSessions: 1 415 | ps4pnPresence: 1 416 | ps4pnFriends: 1 417 | ps4pnGameCustomData: 1 418 | playerPrefsSupport: 0 419 | restrictedAudioUsageRights: 0 420 | ps4UseResolutionFallback: 0 421 | ps4ReprojectionSupport: 0 422 | ps4UseAudio3dBackend: 0 423 | ps4SocialScreenEnabled: 0 424 | ps4ScriptOptimizationLevel: 0 425 | ps4Audio3dVirtualSpeakerCount: 14 426 | ps4attribCpuUsage: 0 427 | ps4PatchPkgPath: 428 | ps4PatchLatestPkgPath: 429 | ps4PatchChangeinfoPath: 430 | ps4PatchDayOne: 0 431 | ps4attribUserManagement: 0 432 | ps4attribMoveSupport: 0 433 | ps4attrib3DSupport: 0 434 | ps4attribShareSupport: 0 435 | ps4attribExclusiveVR: 0 436 | ps4disableAutoHideSplash: 0 437 | ps4videoRecordingFeaturesUsed: 0 438 | ps4contentSearchFeaturesUsed: 0 439 | ps4attribEyeToEyeDistanceSettingVR: 0 440 | ps4IncludedModules: [] 441 | monoEnv: 442 | psp2Splashimage: {fileID: 0} 443 | psp2NPTrophyPackPath: 444 | psp2NPSupportGBMorGJP: 0 445 | psp2NPAgeRating: 12 446 | psp2NPTitleDatPath: 447 | psp2NPCommsID: 448 | psp2NPCommunicationsID: 449 | psp2NPCommsPassphrase: 450 | psp2NPCommsSig: 451 | psp2ParamSfxPath: 452 | psp2ManualPath: 453 | psp2LiveAreaGatePath: 454 | psp2LiveAreaBackroundPath: 455 | psp2LiveAreaPath: 456 | psp2LiveAreaTrialPath: 457 | psp2PatchChangeInfoPath: 458 | psp2PatchOriginalPackage: 459 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 460 | psp2KeystoneFile: 461 | psp2MemoryExpansionMode: 0 462 | psp2DRMType: 0 463 | psp2StorageType: 0 464 | psp2MediaCapacity: 0 465 | psp2DLCConfigPath: 466 | psp2ThumbnailPath: 467 | psp2BackgroundPath: 468 | psp2SoundPath: 469 | psp2TrophyCommId: 470 | psp2TrophyPackagePath: 471 | psp2PackagedResourcesPath: 472 | psp2SaveDataQuota: 10240 473 | psp2ParentalLevel: 1 474 | psp2ShortTitle: Not Set 475 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 476 | psp2Category: 0 477 | psp2MasterVersion: 01.00 478 | psp2AppVersion: 01.00 479 | psp2TVBootMode: 0 480 | psp2EnterButtonAssignment: 2 481 | psp2TVDisableEmu: 0 482 | psp2AllowTwitterDialog: 1 483 | psp2Upgradable: 0 484 | psp2HealthWarning: 0 485 | psp2UseLibLocation: 0 486 | psp2InfoBarOnStartup: 0 487 | psp2InfoBarColor: 0 488 | psp2ScriptOptimizationLevel: 0 489 | psmSplashimage: {fileID: 0} 490 | splashScreenBackgroundSourceLandscape: {fileID: 0} 491 | splashScreenBackgroundSourcePortrait: {fileID: 0} 492 | spritePackerPolicy: 493 | webGLMemorySize: 256 494 | webGLExceptionSupport: 1 495 | webGLNameFilesAsHashes: 0 496 | webGLDataCaching: 0 497 | webGLDebugSymbols: 0 498 | webGLEmscriptenArgs: 499 | webGLModulesDirectory: 500 | webGLTemplate: APPLICATION:Default 501 | webGLAnalyzeBuildSize: 0 502 | webGLUseEmbeddedResources: 0 503 | webGLUseWasm: 0 504 | webGLCompressionFormat: 1 505 | scriptingDefineSymbols: {} 506 | platformArchitecture: {} 507 | scriptingBackend: {} 508 | incrementalIl2cppBuild: {} 509 | additionalIl2CppArgs: 510 | scriptingRuntimeVersion: 0 511 | apiCompatibilityLevelPerPlatform: 512 | Standalone: 1 513 | m_RenderingPath: 1 514 | m_MobileRenderingPath: 1 515 | metroPackageName: RayTracingInOneWeekend 516 | metroPackageVersion: 517 | metroCertificatePath: 518 | metroCertificatePassword: 519 | metroCertificateSubject: 520 | metroCertificateIssuer: 521 | metroCertificateNotAfter: 0000000000000000 522 | metroApplicationDescription: RayTracingInOneWeekend 523 | wsaImages: {} 524 | metroTileShortName: 525 | metroCommandLineArgsFile: 526 | metroTileShowName: 0 527 | metroMediumTileShowName: 0 528 | metroLargeTileShowName: 0 529 | metroWideTileShowName: 0 530 | metroDefaultTileSize: 1 531 | metroTileForegroundText: 2 532 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 533 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 534 | a: 1} 535 | metroSplashScreenUseBackgroundColor: 0 536 | platformCapabilities: {} 537 | metroFTAName: 538 | metroFTAFileTypes: [] 539 | metroProtocolName: 540 | metroCompilationOverrides: 1 541 | tizenProductDescription: 542 | tizenProductURL: 543 | tizenSigningProfileName: 544 | tizenGPSPermissions: 0 545 | tizenMicrophonePermissions: 0 546 | tizenDeploymentTarget: 547 | tizenDeploymentTargetType: -1 548 | tizenMinOSVersion: 1 549 | n3dsUseExtSaveData: 0 550 | n3dsCompressStaticMem: 1 551 | n3dsExtSaveDataNumber: 0x12345 552 | n3dsStackSize: 131072 553 | n3dsTargetPlatform: 2 554 | n3dsRegion: 7 555 | n3dsMediaSize: 0 556 | n3dsLogoStyle: 3 557 | n3dsTitle: GameName 558 | n3dsProductCode: 559 | n3dsApplicationId: 0xFF3FF 560 | stvDeviceAddress: 561 | stvProductDescription: 562 | stvProductAuthor: 563 | stvProductAuthorEmail: 564 | stvProductLink: 565 | stvProductCategory: 0 566 | XboxOneProductId: 567 | XboxOneUpdateKey: 568 | XboxOneSandboxId: 569 | XboxOneContentId: 570 | XboxOneTitleId: 571 | XboxOneSCId: 572 | XboxOneGameOsOverridePath: 573 | XboxOnePackagingOverridePath: 574 | XboxOneAppManifestOverridePath: 575 | XboxOnePackageEncryption: 0 576 | XboxOnePackageUpdateGranularity: 2 577 | XboxOneDescription: 578 | XboxOneLanguage: 579 | - enus 580 | XboxOneCapability: [] 581 | XboxOneGameRating: {} 582 | XboxOneIsContentPackage: 0 583 | XboxOneEnableGPUVariability: 0 584 | XboxOneSockets: {} 585 | XboxOneSplashScreen: {fileID: 0} 586 | XboxOneAllowedProductIds: [] 587 | XboxOnePersistentLocalStorageSize: 0 588 | xboxOneScriptCompiler: 0 589 | vrEditorSettings: 590 | daydream: 591 | daydreamIconForeground: {fileID: 0} 592 | daydreamIconBackground: {fileID: 0} 593 | cloudServicesEnabled: {} 594 | facebookSdkVersion: 7.9.4 595 | apiCompatibilityLevel: 2 596 | cloudProjectId: 597 | projectName: 598 | organizationId: 599 | cloudEnabled: 0 600 | enableNativePlatformBackendsForNewInputSystem: 0 601 | disableOldInputManagerSupport: 0 602 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2017.1.1p3 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: 2 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: 2 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: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 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 | Samsung TV: 2 185 | Standalone: 5 186 | Tizen: 2 187 | Web: 5 188 | WebGL: 3 189 | WiiU: 5 190 | Windows Store Apps: 5 191 | XboxOne: 5 192 | iPhone: 2 193 | tvOS: 2 194 | -------------------------------------------------------------------------------- /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_Enabled: 0 14 | m_CaptureEditorExceptions: 1 15 | UnityPurchasingSettings: 16 | m_Enabled: 0 17 | m_TestMode: 0 18 | UnityAnalyticsSettings: 19 | m_Enabled: 0 20 | m_InitializeOnStartup: 1 21 | m_TestMode: 0 22 | m_TestEventUrl: 23 | m_TestConfigUrl: 24 | UnityAdsSettings: 25 | m_Enabled: 0 26 | m_InitializeOnStartup: 1 27 | m_TestMode: 0 28 | m_EnabledPlatforms: 4294967295 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GPU Ray Tracing in One Weekend 2 | 3 | Peter Shirley's Raytracing in One Wekened, but implemented in Unity with GPU compute. 4 | 5 | See [this blog post](https://medium.com/@jcowles/gpu-ray-tracing-in-one-weekend-3e7d874b3b0f) for details. 6 | 7 | # License 8 | 9 | This software is licensed under the terms of the Apache license. See [LICENSE](LICENSE) for more 10 | information. 11 | 12 | This is not an official Google product. 13 | -------------------------------------------------------------------------------- /RayTracingInOneWeekend.CSharp.Editor.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | AnyCPU 6 | 10.0.20506 7 | 2.0 8 | {0D00F45D-7D7B-44E9-39AF-38C0B8F2BCBE} 9 | Library 10 | Assembly-CSharp-Editor 11 | 512 12 | {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 13 | .NETFramework 14 | v3.5 15 | Unity Full v3.5 16 | 17 | Editor:5 18 | StandaloneWindows64:19 19 | 2017.1.1p3 20 | 21 | 4 22 | 23 | 24 | pdbonly 25 | false 26 | Temp\UnityVS_bin\Debug\ 27 | Temp\UnityVS_obj\Debug\ 28 | prompt 29 | 4 30 | DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_1_1;UNITY_2017_1;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_RUNTIME_NAVMESH_BUILDING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_2_0;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE 31 | false 32 | 33 | 34 | pdbonly 35 | false 36 | Temp\UnityVS_bin\Release\ 37 | Temp\UnityVS_obj\Release\ 38 | prompt 39 | 4 40 | TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_1_1;UNITY_2017_1;UNITY_2017;PLATFORM_ARCH_64;UNITY_64;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_GENERICS;ENABLE_PVR_GI;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_RUNTIME_NAVMESH_BUILDING;ENABLE_SPRITERENDERER_FLIPPING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_NATIVE_ARRAY;ENABLE_SPRITE_MASKING;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;INCLUDE_PUBNUB;ENABLE_PLAYMODE_TESTS_RUNNER;ENABLE_VIDEO;ENABLE_RMGUI;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_STYLE_SHEETS;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_EVENT_QUEUE;ENABLE_CLUSTERINPUT;ENABLE_VR;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;NET_2_0;ENABLE_PROFILER;DEBUG;TRACE;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_NATIVE_ARRAY_CHECKS;UNITY_TEAM_LICENSE;ENABLE_VSTU;UNITY_PRO_LICENSE 41 | false 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | Library\UnityAssemblies\UnityEditor.dll 54 | 55 | 56 | Library\UnityAssemblies\UnityEngine.dll 57 | 58 | 59 | Library\UnityAssemblies\UnityEditor.Advertisements.dll 60 | 61 | 62 | Library\UnityAssemblies\UnityEngine.UI.dll 63 | 64 | 65 | Library\UnityAssemblies\UnityEditor.UI.dll 66 | 67 | 68 | Library\UnityAssemblies\UnityEngine.Networking.dll 69 | 70 | 71 | Library\UnityAssemblies\UnityEditor.Networking.dll 72 | 73 | 74 | Library\UnityAssemblies\UnityEditor.TestRunner.dll 75 | 76 | 77 | Library\UnityAssemblies\UnityEngine.TestRunner.dll 78 | 79 | 80 | Library\UnityAssemblies\nunit.framework.dll 81 | 82 | 83 | Library\UnityAssemblies\UnityEngine.Timeline.dll 84 | 85 | 86 | Library\UnityAssemblies\UnityEditor.Timeline.dll 87 | 88 | 89 | Library\UnityAssemblies\UnityEditor.TreeEditor.dll 90 | 91 | 92 | Library\UnityAssemblies\UnityEngine.Analytics.dll 93 | 94 | 95 | Library\UnityAssemblies\UnityEditor.Analytics.dll 96 | 97 | 98 | Library\UnityAssemblies\UnityEditor.HoloLens.dll 99 | 100 | 101 | Library\UnityAssemblies\UnityEngine.HoloLens.dll 102 | 103 | 104 | Library\UnityAssemblies\UnityEditor.Purchasing.dll 105 | 106 | 107 | Library\UnityAssemblies\UnityEditor.VR.dll 108 | 109 | 110 | Library\UnityAssemblies\UnityEditor.Graphs.dll 111 | 112 | 113 | Library\UnityAssemblies\UnityEditor.Android.Extensions.dll 114 | 115 | 116 | Library\UnityAssemblies\UnityEditor.WebGL.Extensions.dll 117 | 118 | 119 | Library\UnityAssemblies\UnityEditor.WindowsStandalone.Extensions.dll 120 | 121 | 122 | Library\UnityAssemblies\SyntaxTree.VisualStudio.Unity.Bridge.dll 123 | 124 | 125 | 126 | 127 | {F1D40815-5FCC-383C-43E5-714E638F8725} 128 | RayTracingInOneWeekend.CSharp 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | --------------------------------------------------------------------------------