diff --git a/Assets/Assets/Shader/VoxelBatchCluster.compute b/Assets/Assets/Shader/VoxelBatchCluster.compute new file mode 100644 index 0000000..fa7e021 --- /dev/null +++ b/Assets/Assets/Shader/VoxelBatchCluster.compute @@ -0,0 +1,81 @@ +// VoxelBatchCluster.compute +#pragma kernel AccumulateHits +#pragma kernel ComputeMeans + +// ---- Structures ---- +struct BatchData +{ + float3 position; + float maxDistance; +}; + +// ---- Constantes ---- +#define GRID_SIZE 8192 // nombre total de cellules max +#define GRID_PRIME1 73856093 // pour hash +#define GRID_PRIME2 19349663 +#define GRID_PRIME3 83492791 +#define SCALE 1000.0 + +// ---- Buffers ---- +StructuredBuffer inputHits; + +RWStructuredBuffer cellSums; // xyz = somme positions, w = somme maxDistance +RWStructuredBuffer cellCounts; // nombre d'éléments par cellule +AppendStructuredBuffer clusteredHits; + +// ---- Params ---- +float cellSize; // taille d'une cellule (distance seuil) +uint inputCount; // nombre d'éléments d'entrée +float3 gridOrigin; // origine du monde pour le hash + +// ---- Utilitaires ---- +uint HashCell(int3 cell) +{ + uint h = (uint)((cell.x * GRID_PRIME1) ^ (cell.y * GRID_PRIME2) ^ (cell.z * GRID_PRIME3)); + return h % GRID_SIZE; +} + +// ---- Kernel 1 : Accumulation ---- +// Constante d’échelle + +[numthreads(64,1,1)] +void AccumulateHits(uint3 id : SV_DispatchThreadID) +{ + uint i = id.x; + if (i >= inputCount) return; + + BatchData b = inputHits[i]; + + int3 cell = int3(floor((b.position - gridOrigin) / cellSize)); + uint hash = HashCell(cell); + + // Conversion float -> int + int3 posInt = int3(b.position * SCALE); + int maxDistInt = (int)(b.maxDistance * SCALE); + + // Ajout atomique + InterlockedAdd(cellSums[hash].x, posInt.x); + InterlockedAdd(cellSums[hash].y, posInt.y); + InterlockedAdd(cellSums[hash].z, posInt.z); + InterlockedAdd(cellSums[hash].w, maxDistInt); + InterlockedAdd(cellCounts[hash], 1); +} + +// ---- Kernel 2 : Calcul des moyennes ---- +[numthreads(64,1,1)] +void ComputeMeans(uint3 id : SV_DispatchThreadID) +{ + uint i = id.x; + if (i >= GRID_SIZE) return; + + uint count = cellCounts[i]; + if (count == 0) return; + + int4 sum = cellSums[i]; + + BatchData outB; + outB.position = (float3(sum.xyz) / SCALE) / count; + outB.maxDistance = (float(sum.w) / SCALE) / count; + + clusteredHits.Append(outB); +} \ No newline at end of file diff --git a/Assets/Assets/Shader/VoxelBatchCluster.compute.meta b/Assets/Assets/Shader/VoxelBatchCluster.compute.meta new file mode 100644 index 0000000..5618227 --- /dev/null +++ b/Assets/Assets/Shader/VoxelBatchCluster.compute.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7b67ac486de90db48bc81c43fae83845 +ComputeShaderImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Assets/Shader/VoxelRaycast.compute b/Assets/Assets/Shader/VoxelRaycast.compute index 315aab7..0eaacc6 100644 --- a/Assets/Assets/Shader/VoxelRaycast.compute +++ b/Assets/Assets/Shader/VoxelRaycast.compute @@ -133,82 +133,44 @@ inline bool IntersectAABB_fast( return tExit >= max(tEntry, 0.0); } -// AABB-ray intersection (slab method), returns whether intersects and entry distance -bool IntersectAABB(float3 boxCenter, float halfSize, float3 rayOrig, float3 rayDir, float invDirX, float invDirY, float invDirZ, out float tMin, out float tMax) -{ - const float EPS = 0.2; - float3 minB = boxCenter - halfSize; - float3 maxB = boxCenter + halfSize; +#define STACK_SIZE 64 - tMin = -1e20; - tMax = 1e20; - - [unroll] - for (int i = 0; i < 3; i++) - { - float ro = (i==0) ? rayOrig.x : (i==1) ? rayOrig.y : rayOrig.z; - float rd = (i==0) ? rayDir.x : (i==1) ? rayDir.y : rayDir.z; - float mn = (i==0) ? minB.x : (i==1) ? minB.y : minB.z; - float mx = (i==0) ? maxB.x : (i==1) ? maxB.y : maxB.z; - float invD = (i==0) ? invDirX : (i==1) ? invDirY : invDirZ; - - if (abs(rd) < 1e-6) - { - if (ro < mn || ro > mx) return false; - } - else - { - float t1 = (mn - ro) * invD; - float t2 = (mx - ro) * invD; - if (t1 > t2) { float tmp = t1; t1 = t2; t2 = tmp; } - if (t1 > tMin) tMin = t1; - if (t2 < tMax) tMax = t2; - if (tMin > tMax) return false; - } - } - - // Skip self-intersections - if (tMax < EPS) return false; - if (tMin < EPS) tMin = tMax; // Move entry forward if starting inside - - return true; -} - -[numthreads(8,8,1)] // 2D dispatch (8x8 = 64 threads) +[numthreads(8,8,1)] // keep or change to [numthreads(64,1,1)] and 1D dispatch void CSMain(uint3 id : SV_DispatchThreadID) { uint rayIndex = id.x; uint batchIndex = id.y; - if (rayIndex >= rays.Length || batchIndex >= batchDatas.Length) return; RayData r = rays[rayIndex]; BatchData b = batchDatas[batchIndex]; + // initialize outHit as the current max distance (no hit yet) BatchData outHit; - outHit.origin = b.origin; outHit.maxDistance = b.maxDistance; - float3 invDir=(0,0,0); - invDir.x = (abs(r.direction.x) < 1e-6) ? 1e8 : 1.0 / r.direction.x; - invDir.y = (abs(r.direction.y) < 1e-6) ? 1e8 : 1.0 / r.direction.y; - invDir.z = (abs(r.direction.z) < 1e-6) ? 1e8 : 1.0 / r.direction.z; + // safe inverse direction + float eps = 1e-6; + float3 invDir; + invDir.x = (abs(r.direction.x) < eps) ? (r.direction.x >= 0 ? 1e8 : -1e8) : 1.0 / r.direction.x; + invDir.y = (abs(r.direction.y) < eps) ? (r.direction.y >= 0 ? 1e8 : -1e8) : 1.0 / r.direction.y; + invDir.z = (abs(r.direction.z) < eps) ? (r.direction.z >= 0 ? 1e8 : -1e8) : 1.0 / r.direction.z; - StackEntry stack[64]; + // small stack per thread + StackEntry stack[STACK_SIZE]; int sp = 0; - StackEntry entry; - entry.nodeIndex = rootIndex; - entry.center = rootCenter; - entry.halfSize = rootHalfSize ; - - stack[sp++] = entry; + StackEntry root; + root.nodeIndex = rootIndex; + root.center = rootCenter; + root.halfSize = rootHalfSize; + stack[sp++] = root; bool hasHit = false; + StackEntry bestEntry; - StackEntry lastEntry = entry; - + // traversal while (sp > 0) { StackEntry e = stack[--sp]; @@ -217,67 +179,119 @@ void CSMain(uint3 id : SV_DispatchThreadID) LinearNode n = nodes[e.nodeIndex]; float tEntry, tExit; - if (!IntersectAABB_fast(e.center, e.halfSize, b.origin, r.direction, invDir, tEntry, tExit)) - continue; + if (!IntersectAABB_fast(e.center, e.halfSize, b.origin, r.direction, invDir, tEntry, tExit)) continue; - if ( tEntry >= outHit.maxDistance ) continue; + // prune with current best + if (tEntry >= outHit.maxDistance) continue; - // Feuille - if (n.isLeaf == 1) + if (n.isLeaf == 1u) { - if (n.isOccupied == 1) + if (n.isOccupied == 1u) { - float tHit = max(tEntry, 0); + float tHit = max(tEntry, 0.0); if (tHit < outHit.maxDistance) { + // found a closer hit — commit minimal info, defer heavy ops hasHit = true; outHit.maxDistance = tHit; - lastEntry = e; + bestEntry = e; } } continue; } - if (n.childMask != 0) + // Non-leaf: gather children that intersect and their tEntry (small array) + uint childMask = n.childMask; + // small local arrays + float childT[8]; + int childIdx[8]; + float3 childCenter[8]; + + int childCount = 0; + + float childHalf = e.halfSize * 0.5; + for (uint i = 0; i < 8; ++i) { - float childHalf = e.halfSize * 0.5; - for (uint i = 0; i < 8; i++) - { - if (((n.childMask >> i) & 1u) == 0) continue; + if (((childMask >> i) & 1u) == 0u) continue; - uint offset = countbits(n.childMask & ((1u << i) - 1u)); - int childIndex = n.childBase + offset; + uint offset = countbits(childMask & ((1u << i) - 1u)); + int cIndex = int(n.childBase + offset); - float3 offsetVec = childHalf * float3( - (i & 4u) ? 1 : -1, - (i & 2u) ? 1 : -1, - (i & 1u) ? 1 : -1 - ); + // compute child center + float3 offsetVec = childHalf * float3( + (i & 4u) ? 1.0 : -1.0, + (i & 2u) ? 1.0 : -1.0, + (i & 1u) ? 1.0 : -1.0 + ); + float3 cCenter = e.center + offsetVec; - entry.nodeIndex = childIndex; - entry.center = e.center + offsetVec; - entry.halfSize = childHalf ; + // pretest intersection with child AABB to get tEntry + float ctEntry, ctExit; + if (!IntersectAABB_fast(cCenter, childHalf, b.origin, r.direction, invDir, ctEntry, ctExit)) continue; + if (ctEntry >= outHit.maxDistance) continue; // prune child if already farther than best hit - stack[sp++] = entry; - } + // store for near-first push + childT[childCount] = ctEntry; + childIdx[childCount] = cIndex; + childCenter[childCount] = cCenter; + // temporarily store center and half? we recompute on push + childCount++; } - } - if ( hasHit ) + // sort children by childT ascending (insertion sort on at most 8 elements) + for (int a = 1; a < childCount; ++a) + { + float keyT = childT[a]; + int keyIdx = childIdx[a]; + float3 keyCenter = childCenter[a]; + int j = a - 1; + while (j >= 0 && childT[j] > keyT) { + childT[j+1] = childT[j]; + childIdx[j+1] = childIdx[j]; + childCenter[j+1] = childCenter[j]; + j--; + } + childT[j+1] = keyT; + childIdx[j+1] = keyIdx; + childCenter[j+1] = keyCenter; + } + + StackEntry childEntry; + // push children in reverse order (so the nearest is popped first) if stack has room + for (int c = childCount - 1; c >= 0; --c) + { + //if (sp >= STACK_SIZE) break; // protect overflow + int cIndex = childIdx[c]; + + // compute child center (recompute bit pattern from cIndex relative? We need original i -> recompute mapping: + // We can recover i by searching bits in childMask; for clarity, recompute using same loop mapping: simpler: push center using known mapping + // But here we don't have i, so better to recompute using childIndex -> we need a deterministic mapping. + // For simplicity in this snippet, we recompute i by scanning parent children again — cost small (<=8), do it once: + // (implementation detail left to integrate carefully) + // --- simplified approach below assumes child center can be recomputed from cIndex via known ordering (keep same mapping as building) + // You must ensure mapping consistency between builder and shader. + + // push + childEntry.nodeIndex = cIndex; + // recompute center from index i -> omitted here; in your real shader compute the offsetVec same as above + childEntry.center = childCenter[c]; // placeholder: replace with correct center compute + childEntry.halfSize = childHalf; + stack[sp++] = childEntry; + } + } // end while + + if (hasHit) { - LinearNode n = nodes[lastEntry.nodeIndex]; - + // commit heavy ops only now float tHit = outHit.maxDistance; - - outHit.maxDistance = ( b.maxDistance - outHit.maxDistance ) * n.reflexionFactor; - float3 hitPos = b.origin + r.direction * tHit; - outHit.origin = ClosestPointOnAABB(hitPos, lastEntry.center, lastEntry.halfSize); + // closest point + outHit.origin = ClosestPointOnAABB(hitPos, bestEntry.center, bestEntry.halfSize); - float3 dirOffset = b.origin - outHit.origin; - outHit.origin = outHit.origin + dirOffset; + outHit.origin += outHit.origin - bestEntry.center; - hits.Append( outHit ); + // append final + hits.Append(outHit); } } diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 707a1c7..890dfa9 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -519,6 +519,7 @@ MonoBehaviour: maxDepth: 7 boundsSize: 100 computeShader: {fileID: 7200000, guid: beacc211952bec342847019386af6944, type: 3} + clusteringShader: {fileID: 7200000, guid: 7b67ac486de90db48bc81c43fae83845, type: 3} --- !u!114 &464574967 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1092,7 +1093,7 @@ Transform: m_GameObject: {fileID: 1273284503} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 24.7976, y: 0, z: -7.9622} + m_LocalPosition: {x: 18.52, y: 3.69, z: -9.47} m_LocalScale: {x: 11.138, y: 11.138, z: 11.138} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Scripts/VoxelOctree/GPU/VoxelRaycastGpuManager.cs b/Assets/Scripts/VoxelOctree/GPU/VoxelRaycastGpuManager.cs index 7182757..33383a5 100644 --- a/Assets/Scripts/VoxelOctree/GPU/VoxelRaycastGpuManager.cs +++ b/Assets/Scripts/VoxelOctree/GPU/VoxelRaycastGpuManager.cs @@ -1,24 +1,24 @@ using UnityEngine; using System.Runtime.InteropServices; +using System.Diagnostics; public class VoxelRaycastGpuManager { ComputeShader raycastShader; - OctreeNode root; // assign your built octree root - public VoxelRaycastGpuManager(ComputeShader computeShader, OctreeNode octreeRoot) - { - raycastShader = computeShader; - root = octreeRoot; - } +//---------------- Octree ---------------------------------------------------- + OctreeNode root; // assign your built octree root ComputeBuffer nodeBuffer; public LinearTree linearTree; - + +//--------------- RayCasts ------------------------------------------------------ int kernel; + ComputeBuffer datasBuffer; ComputeBuffer hitCounterBuffer = null; ComputeBuffer rayBuffer = null; + ComputeBuffer hitBuffer; int raysPerBatch; @@ -27,12 +27,33 @@ public class VoxelRaycastGpuManager int groupsX; int maxRaycastPerIteration; + + //--------------- Clustering ------------------------------------------------------ + + ComputeShader clusteringShader; + + int gridSize; + int threadCount = 64; + int groupCountHits; + int groupCountGrid; + + ComputeBuffer cellClusteringSums; + ComputeBuffer cellClusteringCounts; + ComputeBuffer clustered; + + + //--------------------------------------------------------------------------------- + + public VoxelRaycastGpuManager(ComputeShader computeShader, ComputeShader clusteringShader, OctreeNode octreeRoot) + { + raycastShader = computeShader; + this.clusteringShader = clusteringShader; + root = octreeRoot; + } public VoxelRaycastGPU.BatchData[] Raycast(in VoxelRaycastGPU.BatchData[] batchData, int datasLenght) { - ComputeBuffer hitBuffer = new ComputeBuffer(5000, batchDataClassSize, ComputeBufferType.Append); - ComputeBuffer datasBuffer = new ComputeBuffer(datasLenght, batchDataClassSize, ComputeBufferType.Default); ComputeBuffer countBuffer = new ComputeBuffer(1, sizeof(int), ComputeBufferType.Raw); int iteration = 0; @@ -41,17 +62,20 @@ public class VoxelRaycastGpuManager datasBuffer.SetData(batchData, 0, 0, currentCount); - while (iteration < 4 && currentCount > 0) + while (iteration < 5 && currentCount > 0) { previousCount = currentCount; - raycastShader.SetBuffer(kernel, "batchDatas", datasBuffer); + hitBuffer.SetCounterValue(0); + + raycastShader.SetBuffer(kernel, "batchDatas", datasBuffer ); raycastShader.SetBuffer(kernel, "hits", hitBuffer); int threadsY = 8; int groupsY = Mathf.CeilToInt((float)currentCount / threadsY); + Stopwatch sw = Stopwatch.StartNew(); raycastShader.Dispatch(kernel, groupsX, groupsY, 1); ComputeBuffer.CopyCount(hitBuffer, countBuffer, 0); @@ -59,22 +83,35 @@ public class VoxelRaycastGpuManager countBuffer.GetData(countArr); currentCount = countArr[0]; - /*VoxelRaycastGPU.BatchData[] hits = new VoxelRaycastGPU.BatchData[currentCount]; - hitBuffer.GetData(hits, 0, 0, currentCount); - - for (int i = 0; i < currentCount; i++) - { - GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); - sphere.transform.position = hits[i].origin; - sphere.transform.localScale = Vector3.one * 0.5f; - }*/ + sw.Stop(); + UnityEngine.Debug.Log($"Dispatch done in {sw.Elapsed.TotalMilliseconds}ms for {previousCount*raysPerBatch} casts retrieving {currentCount} hits"); if (currentCount > 0) { - (datasBuffer, hitBuffer) = (hitBuffer, datasBuffer); + if (currentCount * raysPerBatch > maxRaycastPerIteration && iteration < 5) + { + sw = Stopwatch.StartNew(); + currentCount = Clustering(currentCount); + sw.Stop(); - hitBuffer.Release(); - hitBuffer = new ComputeBuffer(5000, batchDataClassSize, ComputeBufferType.Append); + UnityEngine.Debug.Log($"Clustering done in {sw.Elapsed.TotalMilliseconds}ms for {currentCount} casts"); + + VoxelRaycastGPU.BatchData[] hits = new VoxelRaycastGPU.BatchData[currentCount]; + datasBuffer.GetData(hits, 0, 0, currentCount); + + for (int i = 0; i < currentCount; i++) + { + GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); + sphere.transform.position = hits[i].origin; + sphere.transform.localScale = Vector3.one * 0.5f; + } + + } + else + { + + datasBuffer = hitBuffer; + } } iteration++; @@ -86,19 +123,24 @@ public class VoxelRaycastGpuManager else hitBuffer.GetData(result, 0, 0, previousCount); - hitBuffer.Release(); - datasBuffer.Release(); + countBuffer.Release(); return result; } - public void Init( int nbRaysPerBatch, in VoxelRaycastGPU.Ray[] rays ) + public void Init(int nbRaysPerBatch, in VoxelRaycastGPU.Ray[] rays) { + maxRaycastPerIteration = 1000000; + raysPerBatch = nbRaysPerBatch; + // Flatten octree linearTree = OctreeGpuHelpers.FlattenOctree(root); int nodeStride = Marshal.SizeOf(typeof(LinearNode)); // should be 64 + hitBuffer = new ComputeBuffer(maxRaycastPerIteration * raysPerBatch, batchDataClassSize, ComputeBufferType.Append); + datasBuffer = new ComputeBuffer(maxRaycastPerIteration, batchDataClassSize, ComputeBufferType.Default); + rayBuffer = new ComputeBuffer(rays.Length, Marshal.SizeOf(typeof(VoxelRaycastGPU.Ray)), ComputeBufferType.Default); rayBuffer.SetData(rays, 0, 0, rays.Length); @@ -110,7 +152,7 @@ public class VoxelRaycastGpuManager uint[] counterInit = { 0 }; counterInit[0] = 0; hitCounterBuffer.SetData(counterInit); - + kernel = raycastShader.FindKernel("CSMain"); raycastShader.SetBuffer(kernel, "nodes", nodeBuffer); @@ -124,11 +166,54 @@ public class VoxelRaycastGpuManager raycastShader.SetFloat("rootHalfSize", root.bounds.size.x / 2f); raycastShader.SetFloats("rootCenter", new float[3] { root.bounds.center.x, root.bounds.center.y, root.bounds.center.z }); - raysPerBatch = nbRaysPerBatch; - groupsX = Mathf.CeilToInt((float)raysPerBatch / 8); - maxRaycastPerIteration = 5000 / raysPerBatch; + gridSize = maxRaycastPerIteration / raysPerBatch; + groupCountGrid = Mathf.CeilToInt((float)gridSize / threadCount); + + cellClusteringSums = new ComputeBuffer(gridSize, sizeof(float) * 4); + cellClusteringCounts = new ComputeBuffer(gridSize, sizeof(uint)); + clustered = new ComputeBuffer(gridSize, Marshal.SizeOf(typeof(VoxelRaycastGPU.BatchData)), ComputeBufferType.Append); + } + + public int Clustering( int inputCount ) + { + groupCountHits = Mathf.CeilToInt((float)inputCount / threadCount); + + clustered.SetCounterValue(0); + float[] zero4 = new float[gridSize * 4]; + uint[] zeroU = new uint[gridSize]; + cellClusteringSums.SetData(zero4); + cellClusteringCounts.SetData(zeroU); + + // Shader + int kernelAcc = clusteringShader.FindKernel("AccumulateHits"); + int kernelMean = clusteringShader.FindKernel("ComputeMeans"); + + clusteringShader.SetInt("inputCount", inputCount); + clusteringShader.SetFloat("cellSize", 1.0f); // taille des cellules + clusteringShader.SetVector("gridOrigin", Vector3.zero); + + clusteringShader.SetBuffer(kernelAcc, "inputHits", hitBuffer); + clusteringShader.SetBuffer(kernelAcc, "cellSums", cellClusteringSums); + clusteringShader.SetBuffer(kernelAcc, "cellCounts", cellClusteringCounts); + clusteringShader.Dispatch(kernelAcc, groupCountHits, 1, 1); + + clusteringShader.SetBuffer(kernelMean, "cellSums", cellClusteringSums); + clusteringShader.SetBuffer(kernelMean, "cellCounts", cellClusteringCounts); + clusteringShader.SetBuffer(kernelMean, "clusteredHits", clustered); + clusteringShader.Dispatch(kernelMean, groupCountGrid, 1, 1); + + // Lecture du résultat + ComputeBuffer countBuffer = new ComputeBuffer(1, sizeof(int), ComputeBufferType.Raw); + ComputeBuffer.CopyCount(clustered, countBuffer, 0); + int[] countArr = new int[1]; + countBuffer.GetData(countArr); + int clusterCount = countArr[0]; + + datasBuffer = clustered; + + return clusterCount; } ~VoxelRaycastGpuManager() @@ -138,5 +223,9 @@ public class VoxelRaycastGpuManager if (rayBuffer != null) rayBuffer.Release(); + + hitBuffer.Release(); + datasBuffer.Release(); } + } \ No newline at end of file diff --git a/Assets/Scripts/VoxelOctree/VoxelTreeManager.cs b/Assets/Scripts/VoxelOctree/VoxelTreeManager.cs index 36322b8..3504390 100644 --- a/Assets/Scripts/VoxelOctree/VoxelTreeManager.cs +++ b/Assets/Scripts/VoxelOctree/VoxelTreeManager.cs @@ -15,6 +15,7 @@ public class VoxelTreeManager : MonoBehaviour public int maxDepth = 6; // Tree subdivision limit public float boundsSize = 300f; // World size covered by the voxel tree public ComputeShader computeShader; + public ComputeShader clusteringShader; private OctreeNode root; private VoxelTreeRaycaster raycaster = new VoxelTreeRaycaster(); public VoxelRaycastGpuManager gpuRayCaster; @@ -29,7 +30,7 @@ public class VoxelTreeManager : MonoBehaviour var dbg = FindObjectOfType(); if (dbg) dbg.root = root; - gpuRayCaster = new VoxelRaycastGpuManager(computeShader, root); + gpuRayCaster = new VoxelRaycastGpuManager(computeShader, clusteringShader, root); } // This function replaces pos => pos.magnitude < 100f diff --git a/Assets/Settings.meta b/Assets/Settings.meta new file mode 100644 index 0000000..3b31fdb --- /dev/null +++ b/Assets/Settings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c2a84cff8d04a94c8c462293e8dd112 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/Build Profiles.meta b/Assets/Settings/Build Profiles.meta new file mode 100644 index 0000000..e628227 --- /dev/null +++ b/Assets/Settings/Build Profiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 40a945ad85a306045b49fa05807b0b34 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Settings/Build Profiles/Windows.asset b/Assets/Settings/Build Profiles/Windows.asset new file mode 100644 index 0000000..25930ba --- /dev/null +++ b/Assets/Settings/Build Profiles/Windows.asset @@ -0,0 +1,828 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 15003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: Windows + m_EditorClassIdentifier: UnityEditor.dll::UnityEditor.Build.Profile.BuildProfile + m_AssetVersion: 1 + m_BuildTarget: 19 + m_Subtarget: 2 + m_PlatformId: 4e3c793746204150860bf175a9a41a05 + m_PlatformBuildProfile: + rid: 6379512061355360307 + m_OverrideGlobalSceneList: 0 + m_Scenes: [] + m_ScriptingDefines: [] + m_PlayerSettingsYaml: + m_Settings: + - line: '| PlayerSettings:' + - line: '| m_ObjectHideFlags: 0' + - line: '| serializedVersion: 28' + - line: '| productGUID: 6f3f0780fb773534ba2ed370ebc76319' + - line: '| AndroidProfiler: 0' + - line: '| AndroidFilterTouchesWhenObscured: 0' + - line: '| AndroidEnableSustainedPerformanceMode: 0' + - line: '| defaultScreenOrientation: 4' + - line: '| targetDevice: 2' + - line: '| useOnDemandResources: 0' + - line: '| accelerometerFrequency: 60' + - line: '| companyName: DefaultCompany' + - line: '| productName: Sound' + - line: '| defaultCursor: {instanceID: 0}' + - line: '| cursorHotspot: {x: 0, y: 0}' + - line: '| m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: + 0.1254902, a: 1}' + - line: '| m_ShowUnitySplashScreen: 1' + - line: '| m_ShowUnitySplashLogo: 1' + - line: '| m_SplashScreenOverlayOpacity: 1' + - line: '| m_SplashScreenAnimation: 1' + - line: '| m_SplashScreenLogoStyle: 1' + - line: '| m_SplashScreenDrawMode: 0' + - line: '| m_SplashScreenBackgroundAnimationZoom: 1' + - line: '| m_SplashScreenLogoAnimationZoom: 1' + - line: '| m_SplashScreenBackgroundLandscapeAspect: 1' + - line: '| m_SplashScreenBackgroundPortraitAspect: 1' + - line: '| m_SplashScreenBackgroundLandscapeUvs:' + - line: '| serializedVersion: 2' + - line: '| x: 0' + - line: '| y: 0' + - line: '| width: 1' + - line: '| height: 1' + - line: '| m_SplashScreenBackgroundPortraitUvs:' + - line: '| serializedVersion: 2' + - line: '| x: 0' + - line: '| y: 0' + - line: '| width: 1' + - line: '| height: 1' + - line: '| m_SplashScreenLogos: []' + - line: '| m_VirtualRealitySplashScreen: {instanceID: 0}' + - line: '| m_HolographicTrackingLossScreen: {instanceID: 0}' + - line: '| defaultScreenWidth: 1920' + - line: '| defaultScreenHeight: 1080' + - line: '| defaultScreenWidthWeb: 960' + - line: '| defaultScreenHeightWeb: 600' + - line: '| m_StereoRenderingPath: 0' + - line: '| m_ActiveColorSpace: 1' + - line: '| unsupportedMSAAFallback: 0' + - line: '| m_SpriteBatchMaxVertexCount: 65535' + - line: '| m_SpriteBatchVertexThreshold: 300' + - line: '| m_MTRendering: 1' + - line: '| mipStripping: 0' + - line: '| numberOfMipsStripped: 0' + - line: '| numberOfMipsStrippedPerMipmapLimitGroup: {}' + - line: '| m_StackTraceTypes: 010000000100000001000000010000000100000001000000' + - line: '| iosShowActivityIndicatorOnLoading: -1' + - line: '| androidShowActivityIndicatorOnLoading: -1' + - line: '| iosUseCustomAppBackgroundBehavior: 0' + - line: '| allowedAutorotateToPortrait: 1' + - line: '| allowedAutorotateToPortraitUpsideDown: 1' + - line: '| allowedAutorotateToLandscapeRight: 1' + - line: '| allowedAutorotateToLandscapeLeft: 1' + - line: '| useOSAutorotation: 1' + - line: '| use32BitDisplayBuffer: 1' + - line: '| preserveFramebufferAlpha: 0' + - line: '| disableDepthAndStencilBuffers: 0' + - line: '| androidStartInFullscreen: 1' + - line: '| androidRenderOutsideSafeArea: 1' + - line: '| androidUseSwappy: 1' + - line: '| androidBlitType: 0' + - line: '| androidResizeableActivity: 1' + - line: '| androidDefaultWindowWidth: 1920' + - line: '| androidDefaultWindowHeight: 1080' + - line: '| androidMinimumWindowWidth: 400' + - line: '| androidMinimumWindowHeight: 300' + - line: '| androidFullscreenMode: 1' + - line: '| androidAutoRotationBehavior: 1' + - line: '| androidPredictiveBackSupport: 0' + - line: '| androidApplicationEntry: 2' + - line: '| defaultIsNativeResolution: 1' + - line: '| macRetinaSupport: 1' + - line: '| runInBackground: 1' + - line: '| muteOtherAudioSources: 0' + - line: '| Prepare IOS For Recording: 0' + - line: '| Force IOS Speakers When Recording: 0' + - line: '| audioSpatialExperience: 0' + - line: '| deferSystemGesturesMode: 0' + - line: '| hideHomeButton: 0' + - line: '| submitAnalytics: 1' + - line: '| usePlayerLog: 1' + - line: '| dedicatedServerOptimizations: 1' + - line: '| bakeCollisionMeshes: 0' + - line: '| forceSingleInstance: 0' + - line: '| useFlipModelSwapchain: 1' + - line: '| resizableWindow: 0' + - line: '| useMacAppStoreValidation: 0' + - line: '| macAppStoreCategory: public.app-category.games' + - line: '| gpuSkinning: 1' + - line: '| meshDeformation: 2' + - line: '| xboxPIXTextureCapture: 0' + - line: '| xboxEnableAvatar: 0' + - line: '| xboxEnableKinect: 0' + - line: '| xboxEnableKinectAutoTracking: 0' + - line: '| xboxEnableFitness: 0' + - line: '| visibleInBackground: 1' + - line: '| allowFullscreenSwitch: 1' + - line: '| fullscreenMode: 1' + - line: '| xboxSpeechDB: 0' + - line: '| xboxEnableHeadOrientation: 0' + - line: '| xboxEnableGuest: 0' + - line: '| xboxEnablePIXSampling: 0' + - line: '| metalFramebufferOnly: 0' + - line: '| xboxOneResolution: 0' + - line: '| xboxOneSResolution: 0' + - line: '| xboxOneXResolution: 3' + - line: '| xboxOneMonoLoggingLevel: 0' + - line: '| xboxOneLoggingLevel: 1' + - line: '| xboxOneDisableEsram: 0' + - line: '| xboxOneEnableTypeOptimization: 0' + - line: '| xboxOnePresentImmediateThreshold: 0' + - line: '| switchQueueCommandMemory: 0' + - line: '| switchQueueControlMemory: 16384' + - line: '| switchQueueComputeMemory: 262144' + - line: '| switchNVNShaderPoolsGranularity: 33554432' + - line: '| switchNVNDefaultPoolsGranularity: 16777216' + - line: '| switchNVNOtherPoolsGranularity: 16777216' + - line: '| switchGpuScratchPoolGranularity: 2097152' + - line: '| switchAllowGpuScratchShrinking: 0' + - line: '| switchNVNMaxPublicTextureIDCount: 0' + - line: '| switchNVNMaxPublicSamplerIDCount: 0' + - line: '| switchMaxWorkerMultiple: 8' + - line: '| switchNVNGraphicsFirmwareMemory: 32' + - line: '| switchGraphicsJobsSyncAfterKick: 1' + - line: '| vulkanNumSwapchainBuffers: 3' + - line: '| vulkanEnableSetSRGBWrite: 0' + - line: '| vulkanEnablePreTransform: 1' + - line: '| vulkanEnableLateAcquireNextImage: 0' + - line: '| vulkanEnableCommandBufferRecycling: 1' + - line: '| loadStoreDebugModeEnabled: 0' + - line: '| visionOSBundleVersion: 1.0' + - line: '| tvOSBundleVersion: 1.0' + - line: '| bundleVersion: 0.1' + - line: '| preloadedAssets: []' + - line: '| metroInputSource: 0' + - line: '| wsaTransparentSwapchain: 0' + - line: '| m_HolographicPauseOnTrackingLoss: 1' + - line: '| xboxOneDisableKinectGpuReservation: 1' + - line: '| xboxOneEnable7thCore: 1' + - line: '| vrSettings:' + - line: '| enable360StereoCapture: 0' + - line: '| isWsaHolographicRemotingEnabled: 0' + - line: '| enableFrameTimingStats: 0' + - line: '| enableOpenGLProfilerGPURecorders: 1' + - line: '| allowHDRDisplaySupport: 0' + - line: '| useHDRDisplay: 0' + - line: '| hdrBitDepth: 0' + - line: '| m_ColorGamuts: 00000000' + - line: '| targetPixelDensity: 30' + - line: '| resolutionScalingMode: 0' + - line: '| resetResolutionOnWindowResize: 0' + - line: '| androidSupportedAspectRatio: 1' + - line: '| androidMaxAspectRatio: 2.4' + - line: '| androidMinAspectRatio: 1' + - line: '| applicationIdentifier:' + - line: '| Standalone: com.DefaultCompany.3D-Project' + - line: '| buildNumber:' + - line: '| Standalone: 0' + - line: '| VisionOS: 0' + - line: '| iPhone: 0' + - line: '| tvOS: 0' + - line: '| overrideDefaultApplicationIdentifier: 1' + - line: '| AndroidBundleVersionCode: 1' + - line: '| AndroidMinSdkVersion: 23' + - line: '| AndroidTargetSdkVersion: 0' + - line: '| AndroidPreferredInstallLocation: 1' + - line: '| aotOptions: ' + - line: '| stripEngineCode: 1' + - line: '| iPhoneStrippingLevel: 0' + - line: '| iPhoneScriptCallOptimization: 0' + - line: '| ForceInternetPermission: 0' + - line: '| ForceSDCardPermission: 0' + - line: '| CreateWallpaper: 0' + - line: '| androidSplitApplicationBinary: 0' + - line: '| keepLoadedShadersAlive: 0' + - line: '| StripUnusedMeshComponents: 1' + - line: '| strictShaderVariantMatching: 0' + - line: '| VertexChannelCompressionMask: 4054' + - line: '| iPhoneSdkVersion: 988' + - line: '| iOSSimulatorArchitecture: 0' + - line: '| iOSTargetOSVersionString: 13.0' + - line: '| tvOSSdkVersion: 0' + - line: '| tvOSSimulatorArchitecture: 0' + - line: '| tvOSRequireExtendedGameController: 0' + - line: '| tvOSTargetOSVersionString: 13.0' + - line: '| VisionOSSdkVersion: 0' + - line: '| VisionOSTargetOSVersionString: 1.0' + - line: '| uIPrerenderedIcon: 0' + - line: '| uIRequiresPersistentWiFi: 0' + - line: '| uIRequiresFullScreen: 1' + - line: '| uIStatusBarHidden: 1' + - line: '| uIExitOnSuspend: 0' + - line: '| uIStatusBarStyle: 0' + - line: '| appleTVSplashScreen: {instanceID: 0}' + - line: '| appleTVSplashScreen2x: {instanceID: 0}' + - line: '| tvOSSmallIconLayers: []' + - line: '| tvOSSmallIconLayers2x: []' + - line: '| tvOSLargeIconLayers: []' + - line: '| tvOSLargeIconLayers2x: []' + - line: '| tvOSTopShelfImageLayers: []' + - line: '| tvOSTopShelfImageLayers2x: []' + - line: '| tvOSTopShelfImageWideLayers: []' + - line: '| tvOSTopShelfImageWideLayers2x: []' + - line: '| iOSLaunchScreenType: 0' + - line: '| iOSLaunchScreenPortrait: {instanceID: 0}' + - line: '| iOSLaunchScreenLandscape: {instanceID: 0}' + - line: '| iOSLaunchScreenBackgroundColor:' + - line: '| serializedVersion: 2' + - line: '| rgba: 0' + - line: '| iOSLaunchScreenFillPct: 100' + - line: '| iOSLaunchScreenSize: 100' + - line: '| iOSLaunchScreeniPadType: 0' + - line: '| iOSLaunchScreeniPadImage: {instanceID: 0}' + - line: '| iOSLaunchScreeniPadBackgroundColor:' + - line: '| serializedVersion: 2' + - line: '| rgba: 0' + - line: '| iOSLaunchScreeniPadFillPct: 100' + - line: '| iOSLaunchScreeniPadSize: 100' + - line: '| iOSLaunchScreenCustomStoryboardPath: ' + - line: '| iOSLaunchScreeniPadCustomStoryboardPath: ' + - line: '| iOSDeviceRequirements: []' + - line: '| iOSURLSchemes: []' + - line: '| macOSURLSchemes: []' + - line: '| iOSBackgroundModes: 0' + - line: '| iOSMetalForceHardShadows: 0' + - line: '| metalEditorSupport: 1' + - line: '| metalAPIValidation: 1' + - line: '| metalCompileShaderBinary: 0' + - line: '| iOSRenderExtraFrameOnPause: 0' + - line: '| iosCopyPluginsCodeInsteadOfSymlink: 0' + - line: '| appleDeveloperTeamID: ' + - line: '| iOSManualSigningProvisioningProfileID: ' + - line: '| tvOSManualSigningProvisioningProfileID: ' + - line: '| VisionOSManualSigningProvisioningProfileID: ' + - line: '| iOSManualSigningProvisioningProfileType: 0' + - line: '| tvOSManualSigningProvisioningProfileType: 0' + - line: '| VisionOSManualSigningProvisioningProfileType: 0' + - line: '| appleEnableAutomaticSigning: 0' + - line: '| iOSRequireARKit: 0' + - line: '| iOSAutomaticallyDetectAndAddCapabilities: 1' + - line: '| appleEnableProMotion: 0' + - line: '| shaderPrecisionModel: 0' + - line: '| clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea' + - line: '| templatePackageId: com.unity.template.3d@9.1.0' + - line: '| templateDefaultScene: Assets/Scenes/SampleScene.unity' + - line: '| useCustomMainManifest: 0' + - line: '| useCustomLauncherManifest: 0' + - line: '| useCustomMainGradleTemplate: 0' + - line: '| useCustomLauncherGradleManifest: 0' + - line: '| useCustomBaseGradleTemplate: 0' + - line: '| useCustomGradlePropertiesTemplate: 0' + - line: '| useCustomGradleSettingsTemplate: 0' + - line: '| useCustomProguardFile: 0' + - line: '| AndroidTargetArchitectures: 2' + - line: '| AndroidSplashScreenScale: 0' + - line: '| androidSplashScreen: {instanceID: 0}' + - line: '| AndroidKeystoreName: ' + - line: '| AndroidKeyaliasName: ' + - line: '| AndroidEnableArmv9SecurityFeatures: 0' + - line: '| AndroidEnableArm64MTE: 0' + - line: '| AndroidBuildApkPerCpuArchitecture: 0' + - line: '| AndroidTVCompatibility: 0' + - line: '| AndroidIsGame: 1' + - line: '| androidAppCategory: 3' + - line: '| useAndroidAppCategory: 1' + - line: '| androidAppCategoryOther: ' + - line: '| AndroidEnableTango: 0' + - line: '| androidEnableBanner: 1' + - line: '| androidUseLowAccuracyLocation: 0' + - line: '| androidUseCustomKeystore: 0' + - line: '| m_AndroidBanners:' + - line: '| - width: 320' + - line: '| height: 180' + - line: '| banner: {instanceID: 0}' + - line: '| androidGamepadSupportLevel: 0' + - line: '| AndroidMinifyRelease: 0' + - line: '| AndroidMinifyDebug: 0' + - line: '| AndroidValidateAppBundleSize: 1' + - line: '| AndroidAppBundleSizeToValidate: 150' + - line: '| AndroidReportGooglePlayAppDependencies: 1' + - line: '| androidSymbolsSizeThreshold: 800' + - line: '| m_BuildTargetIcons: []' + - line: '| m_BuildTargetPlatformIcons: []' + - line: '| m_BuildTargetBatching:' + - line: '| - m_BuildTarget: Standalone' + - line: '| m_StaticBatching: 1' + - line: '| m_DynamicBatching: 0' + - line: '| - m_BuildTarget: tvOS' + - line: '| m_StaticBatching: 1' + - line: '| m_DynamicBatching: 0' + - line: '| - m_BuildTarget: Android' + - line: '| m_StaticBatching: 1' + - line: '| m_DynamicBatching: 0' + - line: '| - m_BuildTarget: iPhone' + - line: '| m_StaticBatching: 1' + - line: '| m_DynamicBatching: 0' + - line: '| - m_BuildTarget: WebGL' + - line: '| m_StaticBatching: 0' + - line: '| m_DynamicBatching: 0' + - line: '| m_BuildTargetShaderSettings: []' + - line: '| m_BuildTargetGraphicsJobs:' + - line: '| - m_BuildTarget: MacStandaloneSupport' + - line: '| m_GraphicsJobs: 0' + - line: '| - m_BuildTarget: Switch' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: MetroSupport' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: AppleTVSupport' + - line: '| m_GraphicsJobs: 0' + - line: '| - m_BuildTarget: BJMSupport' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: LinuxStandaloneSupport' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: PS4Player' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: iOSSupport' + - line: '| m_GraphicsJobs: 0' + - line: '| - m_BuildTarget: WindowsStandaloneSupport' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: XboxOnePlayer' + - line: '| m_GraphicsJobs: 1' + - line: '| - m_BuildTarget: LuminSupport' + - line: '| m_GraphicsJobs: 0' + - line: '| - m_BuildTarget: AndroidPlayer' + - line: '| m_GraphicsJobs: 0' + - line: '| - m_BuildTarget: WebGLSupport' + - line: '| m_GraphicsJobs: 0' + - line: '| m_BuildTargetGraphicsJobMode:' + - line: '| - m_BuildTarget: PS4Player' + - line: '| m_GraphicsJobMode: 0' + - line: '| - m_BuildTarget: XboxOnePlayer' + - line: '| m_GraphicsJobMode: 0' + - line: '| m_BuildTargetGraphicsAPIs:' + - line: '| - m_BuildTarget: AndroidPlayer' + - line: '| m_APIs: 150000000b000000' + - line: '| m_Automatic: 1' + - line: '| - m_BuildTarget: iOSSupport' + - line: '| m_APIs: 10000000' + - line: '| m_Automatic: 1' + - line: '| - m_BuildTarget: AppleTVSupport' + - line: '| m_APIs: 10000000' + - line: '| m_Automatic: 1' + - line: '| - m_BuildTarget: WebGLSupport' + - line: '| m_APIs: 0b000000' + - line: '| m_Automatic: 1' + - line: '| m_BuildTargetVRSettings:' + - line: '| - m_BuildTarget: Standalone' + - line: '| m_Enabled: 0' + - line: '| m_Devices:' + - line: '| - Oculus' + - line: '| - OpenVR' + - line: '| m_DefaultShaderChunkSizeInMB: 16' + - line: '| m_DefaultShaderChunkCount: 0' + - line: '| openGLRequireES31: 0' + - line: '| openGLRequireES31AEP: 0' + - line: '| openGLRequireES32: 0' + - line: '| m_TemplateCustomTags: {}' + - line: '| mobileMTRendering:' + - line: '| Android: 1' + - line: '| iPhone: 1' + - line: '| tvOS: 1' + - line: '| m_BuildTargetGroupLightmapEncodingQuality:' + - line: '| - serializedVersion: 2' + - line: '| m_BuildTarget: Android' + - line: '| m_EncodingQuality: 1' + - line: '| - serializedVersion: 2' + - line: '| m_BuildTarget: iPhone' + - line: '| m_EncodingQuality: 1' + - line: '| - serializedVersion: 2' + - line: '| m_BuildTarget: tvOS' + - line: '| m_EncodingQuality: 1' + - line: '| m_BuildTargetGroupHDRCubemapEncodingQuality: []' + - line: '| m_BuildTargetGroupLightmapSettings: []' + - line: '| m_BuildTargetGroupLoadStoreDebugModeSettings: []' + - line: '| m_BuildTargetNormalMapEncoding:' + - line: '| - m_BuildTarget: Android' + - line: '| m_Encoding: 1' + - line: '| - m_BuildTarget: iPhone' + - line: '| m_Encoding: 1' + - line: '| - m_BuildTarget: tvOS' + - line: '| m_Encoding: 1' + - line: '| m_BuildTargetDefaultTextureCompressionFormat:' + - line: '| - serializedVersion: 3' + - line: '| m_BuildTarget: Android' + - line: '| m_Formats: 03000000' + - line: '| playModeTestRunnerEnabled: 0' + - line: '| runPlayModeTestAsEditModeTest: 0' + - line: '| actionOnDotNetUnhandledException: 1' + - line: '| editorGfxJobOverride: 1' + - line: '| enableInternalProfiler: 0' + - line: '| logObjCUncaughtExceptions: 1' + - line: '| enableCrashReportAPI: 0' + - line: '| cameraUsageDescription: ' + - line: '| locationUsageDescription: ' + - line: '| microphoneUsageDescription: ' + - line: '| bluetoothUsageDescription: ' + - line: '| macOSTargetOSVersion: 11.0' + - line: '| switchNMETAOverride: ' + - line: '| switchNetLibKey: ' + - line: '| switchSocketMemoryPoolSize: 6144' + - line: '| switchSocketAllocatorPoolSize: 128' + - line: '| switchSocketConcurrencyLimit: 14' + - line: '| switchScreenResolutionBehavior: 2' + - line: '| switchUseCPUProfiler: 0' + - line: '| switchEnableFileSystemTrace: 0' + - line: '| switchLTOSetting: 0' + - line: '| switchApplicationID: 0x01004b9000490000' + - line: '| switchNSODependencies: ' + - line: '| switchCompilerFlags: ' + - line: '| switchTitleNames_0: ' + - line: '| switchTitleNames_1: ' + - line: '| switchTitleNames_2: ' + - line: '| switchTitleNames_3: ' + - line: '| switchTitleNames_4: ' + - line: '| switchTitleNames_5: ' + - line: '| switchTitleNames_6: ' + - line: '| switchTitleNames_7: ' + - line: '| switchTitleNames_8: ' + - line: '| switchTitleNames_9: ' + - line: '| switchTitleNames_10: ' + - line: '| switchTitleNames_11: ' + - line: '| switchTitleNames_12: ' + - line: '| switchTitleNames_13: ' + - line: '| switchTitleNames_14: ' + - line: '| switchTitleNames_15: ' + - line: '| switchPublisherNames_0: ' + - line: '| switchPublisherNames_1: ' + - line: '| switchPublisherNames_2: ' + - line: '| switchPublisherNames_3: ' + - line: '| switchPublisherNames_4: ' + - line: '| switchPublisherNames_5: ' + - line: '| switchPublisherNames_6: ' + - line: '| switchPublisherNames_7: ' + - line: '| switchPublisherNames_8: ' + - line: '| switchPublisherNames_9: ' + - line: '| switchPublisherNames_10: ' + - line: '| switchPublisherNames_11: ' + - line: '| switchPublisherNames_12: ' + - line: '| switchPublisherNames_13: ' + - line: '| switchPublisherNames_14: ' + - line: '| switchPublisherNames_15: ' + - line: '| switchIcons_0: {instanceID: 0}' + - line: '| switchIcons_1: {instanceID: 0}' + - line: '| switchIcons_2: {instanceID: 0}' + - line: '| switchIcons_3: {instanceID: 0}' + - line: '| switchIcons_4: {instanceID: 0}' + - line: '| switchIcons_5: {instanceID: 0}' + - line: '| switchIcons_6: {instanceID: 0}' + - line: '| switchIcons_7: {instanceID: 0}' + - line: '| switchIcons_8: {instanceID: 0}' + - line: '| switchIcons_9: {instanceID: 0}' + - line: '| switchIcons_10: {instanceID: 0}' + - line: '| switchIcons_11: {instanceID: 0}' + - line: '| switchIcons_12: {instanceID: 0}' + - line: '| switchIcons_13: {instanceID: 0}' + - line: '| switchIcons_14: {instanceID: 0}' + - line: '| switchIcons_15: {instanceID: 0}' + - line: '| switchSmallIcons_0: {instanceID: 0}' + - line: '| switchSmallIcons_1: {instanceID: 0}' + - line: '| switchSmallIcons_2: {instanceID: 0}' + - line: '| switchSmallIcons_3: {instanceID: 0}' + - line: '| switchSmallIcons_4: {instanceID: 0}' + - line: '| switchSmallIcons_5: {instanceID: 0}' + - line: '| switchSmallIcons_6: {instanceID: 0}' + - line: '| switchSmallIcons_7: {instanceID: 0}' + - line: '| switchSmallIcons_8: {instanceID: 0}' + - line: '| switchSmallIcons_9: {instanceID: 0}' + - line: '| switchSmallIcons_10: {instanceID: 0}' + - line: '| switchSmallIcons_11: {instanceID: 0}' + - line: '| switchSmallIcons_12: {instanceID: 0}' + - line: '| switchSmallIcons_13: {instanceID: 0}' + - line: '| switchSmallIcons_14: {instanceID: 0}' + - line: '| switchSmallIcons_15: {instanceID: 0}' + - line: '| switchManualHTML: ' + - line: '| switchAccessibleURLs: ' + - line: '| switchLegalInformation: ' + - line: '| switchMainThreadStackSize: 1048576' + - line: '| switchPresenceGroupId: ' + - line: '| switchLogoHandling: 0' + - line: '| switchReleaseVersion: 0' + - line: '| switchDisplayVersion: 1.0.0' + - line: '| switchStartupUserAccount: 0' + - line: '| switchSupportedLanguagesMask: 0' + - line: '| switchLogoType: 0' + - line: '| switchApplicationErrorCodeCategory: ' + - line: '| switchUserAccountSaveDataSize: 0' + - line: '| switchUserAccountSaveDataJournalSize: 0' + - line: '| switchApplicationAttribute: 0' + - line: '| switchCardSpecSize: -1' + - line: '| switchCardSpecClock: -1' + - line: '| switchRatingsMask: 0' + - line: '| switchRatingsInt_0: 0' + - line: '| switchRatingsInt_1: 0' + - line: '| switchRatingsInt_2: 0' + - line: '| switchRatingsInt_3: 0' + - line: '| switchRatingsInt_4: 0' + - line: '| switchRatingsInt_5: 0' + - line: '| switchRatingsInt_6: 0' + - line: '| switchRatingsInt_7: 0' + - line: '| switchRatingsInt_8: 0' + - line: '| switchRatingsInt_9: 0' + - line: '| switchRatingsInt_10: 0' + - line: '| switchRatingsInt_11: 0' + - line: '| switchRatingsInt_12: 0' + - line: '| switchLocalCommunicationIds_0: ' + - line: '| switchLocalCommunicationIds_1: ' + - line: '| switchLocalCommunicationIds_2: ' + - line: '| switchLocalCommunicationIds_3: ' + - line: '| switchLocalCommunicationIds_4: ' + - line: '| switchLocalCommunicationIds_5: ' + - line: '| switchLocalCommunicationIds_6: ' + - line: '| switchLocalCommunicationIds_7: ' + - line: '| switchParentalControl: 0' + - line: '| switchAllowsScreenshot: 1' + - line: '| switchAllowsVideoCapturing: 1' + - line: '| switchAllowsRuntimeAddOnContentInstall: 0' + - line: '| switchDataLossConfirmation: 0' + - line: '| switchUserAccountLockEnabled: 0' + - line: '| switchSystemResourceMemory: 16777216' + - line: '| switchSupportedNpadStyles: 22' + - line: '| switchNativeFsCacheSize: 32' + - line: '| switchIsHoldTypeHorizontal: 0' + - line: '| switchSupportedNpadCount: 8' + - line: '| switchEnableTouchScreen: 1' + - line: '| switchSocketConfigEnabled: 0' + - line: '| switchTcpInitialSendBufferSize: 32' + - line: '| switchTcpInitialReceiveBufferSize: 64' + - line: '| switchTcpAutoSendBufferSizeMax: 256' + - line: '| switchTcpAutoReceiveBufferSizeMax: 256' + - line: '| switchUdpSendBufferSize: 9' + - line: '| switchUdpReceiveBufferSize: 42' + - line: '| switchSocketBufferEfficiency: 4' + - line: '| switchSocketInitializeEnabled: 1' + - line: '| switchNetworkInterfaceManagerInitializeEnabled: 1' + - line: '| switchDisableHTCSPlayerConnection: 0' + - line: '| switchUseNewStyleFilepaths: 1' + - line: '| switchUseLegacyFmodPriorities: 0' + - line: '| switchUseMicroSleepForYield: 1' + - line: '| switchEnableRamDiskSupport: 0' + - line: '| switchMicroSleepForYieldTime: 25' + - line: '| switchRamDiskSpaceSize: 12' + - line: '| switchUpgradedPlayerSettingsToNMETA: 0' + - line: '| ps4NPAgeRating: 12' + - line: '| ps4NPTitleSecret: ' + - line: '| ps4NPTrophyPackPath: ' + - line: '| ps4ParentalLevel: 11' + - line: '| ps4ContentID: ' + - line: '| ps4Category: 0' + - line: '| ps4MasterVersion: 01.00' + - line: '| ps4AppVersion: 01.00' + - line: '| ps4AppType: 0' + - line: '| ps4ParamSfxPath: ' + - line: '| ps4VideoOutPixelFormat: 0' + - line: '| ps4VideoOutInitialWidth: 1920' + - line: '| ps4VideoOutBaseModeInitialWidth: 1920' + - line: '| ps4VideoOutReprojectionRate: 60' + - line: '| ps4PronunciationXMLPath: ' + - line: '| ps4PronunciationSIGPath: ' + - line: '| ps4BackgroundImagePath: ' + - line: '| ps4StartupImagePath: ' + - line: '| ps4StartupImagesFolder: ' + - line: '| ps4IconImagesFolder: ' + - line: '| ps4SaveDataImagePath: ' + - line: '| ps4SdkOverride: ' + - line: '| ps4BGMPath: ' + - line: '| ps4ShareFilePath: ' + - line: '| ps4ShareOverlayImagePath: ' + - line: '| ps4PrivacyGuardImagePath: ' + - line: '| ps4ExtraSceSysFile: ' + - line: '| ps4NPtitleDatPath: ' + - line: '| ps4RemotePlayKeyAssignment: -1' + - line: '| ps4RemotePlayKeyMappingDir: ' + - line: '| ps4PlayTogetherPlayerCount: 0' + - line: '| ps4EnterButtonAssignment: 1' + - line: '| ps4ApplicationParam1: 0' + - line: '| ps4ApplicationParam2: 0' + - line: '| ps4ApplicationParam3: 0' + - line: '| ps4ApplicationParam4: 0' + - line: '| ps4DownloadDataSize: 0' + - line: '| ps4GarlicHeapSize: 2048' + - line: '| ps4ProGarlicHeapSize: 2560' + - line: '| playerPrefsMaxSize: 32768' + - line: '| ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ' + - line: '| ps4pnSessions: 1' + - line: '| ps4pnPresence: 1' + - line: '| ps4pnFriends: 1' + - line: '| ps4pnGameCustomData: 1' + - line: '| playerPrefsSupport: 0' + - line: '| enableApplicationExit: 0' + - line: '| resetTempFolder: 1' + - line: '| restrictedAudioUsageRights: 0' + - line: '| ps4UseResolutionFallback: 0' + - line: '| ps4ReprojectionSupport: 0' + - line: '| ps4UseAudio3dBackend: 0' + - line: '| ps4UseLowGarlicFragmentationMode: 1' + - line: '| ps4SocialScreenEnabled: 0' + - line: '| ps4ScriptOptimizationLevel: 0' + - line: '| ps4Audio3dVirtualSpeakerCount: 14' + - line: '| ps4attribCpuUsage: 0' + - line: '| ps4PatchPkgPath: ' + - line: '| ps4PatchLatestPkgPath: ' + - line: '| ps4PatchChangeinfoPath: ' + - line: '| ps4PatchDayOne: 0' + - line: '| ps4attribUserManagement: 0' + - line: '| ps4attribMoveSupport: 0' + - line: '| ps4attrib3DSupport: 0' + - line: '| ps4attribShareSupport: 0' + - line: '| ps4attribExclusiveVR: 0' + - line: '| ps4disableAutoHideSplash: 0' + - line: '| ps4videoRecordingFeaturesUsed: 0' + - line: '| ps4contentSearchFeaturesUsed: 0' + - line: '| ps4CompatibilityPS5: 0' + - line: '| ps4AllowPS5Detection: 0' + - line: '| ps4GPU800MHz: 1' + - line: '| ps4attribEyeToEyeDistanceSettingVR: 0' + - line: '| ps4IncludedModules: []' + - line: '| ps4attribVROutputEnabled: 0' + - line: '| monoEnv: ' + - line: '| splashScreenBackgroundSourceLandscape: {instanceID: 0}' + - line: '| splashScreenBackgroundSourcePortrait: {instanceID: 0}' + - line: '| blurSplashScreenBackground: 1' + - line: '| spritePackerPolicy: ' + - line: '| webGLMemorySize: 16' + - line: '| webGLExceptionSupport: 1' + - line: '| webGLNameFilesAsHashes: 0' + - line: '| webGLShowDiagnostics: 0' + - line: '| webGLDataCaching: 1' + - line: '| webGLDebugSymbols: 0' + - line: '| webGLEmscriptenArgs: ' + - line: '| webGLModulesDirectory: ' + - line: '| webGLTemplate: APPLICATION:Default' + - line: '| webGLAnalyzeBuildSize: 0' + - line: '| webGLUseEmbeddedResources: 0' + - line: '| webGLCompressionFormat: 1' + - line: '| webGLWasmArithmeticExceptions: 0' + - line: '| webGLLinkerTarget: 1' + - line: '| webGLThreadsSupport: 0' + - line: '| webGLDecompressionFallback: 0' + - line: '| webGLInitialMemorySize: 32' + - line: '| webGLMaximumMemorySize: 2048' + - line: '| webGLMemoryGrowthMode: 2' + - line: '| webGLMemoryLinearGrowthStep: 16' + - line: '| webGLMemoryGeometricGrowthStep: 0.2' + - line: '| webGLMemoryGeometricGrowthCap: 96' + - line: '| webGLPowerPreference: 2' + - line: '| webGLWebAssemblyTable: 0' + - line: '| webGLWebAssemblyBigInt: 0' + - line: '| webGLCloseOnQuit: 0' + - line: '| webWasm2023: 0' + - line: '| webEnableSubmoduleStrippingCompatibility: 0' + - line: '| scriptingDefineSymbols: {}' + - line: '| additionalCompilerArguments: {}' + - line: '| platformArchitecture: {}' + - line: '| scriptingBackend:' + - line: '| Android: 1' + - line: '| il2cppCompilerConfiguration: {}' + - line: '| il2cppCodeGeneration: {}' + - line: '| il2cppStacktraceInformation: {}' + - line: '| managedStrippingLevel: {}' + - line: '| incrementalIl2cppBuild: {}' + - line: '| suppressCommonWarnings: 1' + - line: '| allowUnsafeCode: 0' + - line: '| useDeterministicCompilation: 1' + - line: '| additionalIl2CppArgs: ' + - line: '| scriptingRuntimeVersion: 1' + - line: '| gcIncremental: 1' + - line: '| gcWBarrierValidation: 0' + - line: '| apiCompatibilityLevelPerPlatform: {}' + - line: '| editorAssembliesCompatibilityLevel: 1' + - line: '| m_RenderingPath: 1' + - line: '| m_MobileRenderingPath: 1' + - line: '| metroPackageName: Sound' + - line: '| metroPackageVersion: ' + - line: '| metroCertificatePath: ' + - line: '| metroCertificatePassword: ' + - line: '| metroCertificateSubject: ' + - line: '| metroCertificateIssuer: ' + - line: '| metroCertificateNotAfter: 0000000000000000' + - line: '| metroApplicationDescription: Sound' + - line: '| wsaImages: {}' + - line: '| metroTileShortName: ' + - line: '| metroTileShowName: 0' + - line: '| metroMediumTileShowName: 0' + - line: '| metroLargeTileShowName: 0' + - line: '| metroWideTileShowName: 0' + - line: '| metroSupportStreamingInstall: 0' + - line: '| metroLastRequiredScene: 0' + - line: '| metroDefaultTileSize: 1' + - line: '| metroTileForegroundText: 2' + - line: '| metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, + a: 0}' + - line: '| metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, + b: 0.21568628, a: 1}' + - line: '| metroSplashScreenUseBackgroundColor: 0' + - line: '| syncCapabilities: 0' + - line: '| platformCapabilities: {}' + - line: '| metroTargetDeviceFamilies: {}' + - line: '| metroFTAName: ' + - line: '| metroFTAFileTypes: []' + - line: '| metroProtocolName: ' + - line: '| vcxProjDefaultLanguage: ' + - line: '| XboxOneProductId: ' + - line: '| XboxOneUpdateKey: ' + - line: '| XboxOneSandboxId: ' + - line: '| XboxOneContentId: ' + - line: '| XboxOneTitleId: ' + - line: '| XboxOneSCId: ' + - line: '| XboxOneGameOsOverridePath: ' + - line: '| XboxOnePackagingOverridePath: ' + - line: '| XboxOneAppManifestOverridePath: ' + - line: '| XboxOneVersion: 1.0.0.0' + - line: '| XboxOnePackageEncryption: 0' + - line: '| XboxOnePackageUpdateGranularity: 2' + - line: '| XboxOneDescription: ' + - line: '| XboxOneLanguage:' + - line: '| - enus' + - line: '| XboxOneCapability: []' + - line: '| XboxOneGameRating: {}' + - line: '| XboxOneIsContentPackage: 0' + - line: '| XboxOneEnhancedXboxCompatibilityMode: 0' + - line: '| XboxOneEnableGPUVariability: 1' + - line: '| XboxOneSockets: {}' + - line: '| XboxOneSplashScreen: {instanceID: 0}' + - line: '| XboxOneAllowedProductIds: []' + - line: '| XboxOnePersistentLocalStorageSize: 0' + - line: '| XboxOneXTitleMemory: 8' + - line: '| XboxOneOverrideIdentityName: ' + - line: '| XboxOneOverrideIdentityPublisher: ' + - line: '| vrEditorSettings: {}' + - line: '| cloudServicesEnabled:' + - line: '| UNet: 1' + - line: '| luminIcon:' + - line: '| m_Name: ' + - line: '| m_ModelFolderPath: ' + - line: '| m_PortalFolderPath: ' + - line: '| luminCert:' + - line: '| m_CertPath: ' + - line: '| m_SignPackage: 1' + - line: '| luminIsChannelApp: 0' + - line: '| luminVersion:' + - line: '| m_VersionCode: 1' + - line: '| m_VersionName: ' + - line: '| hmiPlayerDataPath: ' + - line: '| hmiForceSRGBBlit: 0' + - line: '| embeddedLinuxEnableGamepadInput: 0' + - line: '| hmiCpuConfiguration: ' + - line: '| hmiLogStartupTiming: 0' + - line: '| qnxGraphicConfPath: ' + - line: '| apiCompatibilityLevel: 6' + - line: '| captureStartupLogs: {}' + - line: '| activeInputHandler: 2' + - line: '| windowsGamepadBackendHint: 0' + - line: '| cloudProjectId: b0017005-6636-4b5f-b540-750971b93402' + - line: '| framebufferDepthMemorylessMode: 0' + - line: '| qualitySettingsNames: []' + - line: '| projectName: Sound' + - line: '| organizationId: blomios_unity' + - line: '| cloudEnabled: 0' + - line: '| legacyClampBlendShapeWeights: 0' + - line: '| hmiLoadingImage: {instanceID: 0}' + - line: '| platformRequiresReadableAssets: 0' + - line: '| virtualTexturingSupportEnabled: 0' + - line: '| insecureHttpOption: 0' + - line: '| androidVulkanDenyFilterList: []' + - line: '| androidVulkanAllowFilterList: []' + - line: '| androidVulkanDeviceFilterListAsset: {instanceID: 0}' + - line: '| d3d12DeviceFilterListAsset: {instanceID: 0}' + - line: '| ' + references: + version: 2 + RefIds: + - rid: 6379512061355360307 + type: {class: WindowsPlatformSettings, ns: UnityEditor.WindowsStandalone, asm: UnityEditor.WindowsStandalone.Extensions} + data: + m_Development: 0 + m_ConnectProfiler: 0 + m_BuildWithDeepProfilingSupport: 0 + m_AllowDebugging: 0 + m_WaitForManagedDebugger: 0 + m_ManagedDebuggerFixedPort: 0 + m_ExplicitNullChecks: 0 + m_ExplicitDivideByZeroChecks: 0 + m_ExplicitArrayBoundsChecks: 0 + m_CompressionType: 0 + m_InstallInBuildFolder: 0 + m_InsightsSettingsContainer: + m_BuildProfileEngineDiagnosticsState: 0 + m_WindowsBuildAndRunDeployTarget: 0 + m_Architecture: 0 + m_CreateSolution: 0 + m_CopyPDBFiles: 0 + m_WindowsDevicePortalAddress: + m_WindowsDevicePortalUsername: diff --git a/Assets/Settings/Build Profiles/Windows.asset.meta b/Assets/Settings/Build Profiles/Windows.asset.meta new file mode 100644 index 0000000..32a0196 --- /dev/null +++ b/Assets/Settings/Build Profiles/Windows.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 06ffdc248d6e2de4fb066396107cd4a5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 78cda6d..c42a069 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -4,7 +4,10 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 - m_Scenes: [] + m_Scenes: + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab m_configObjects: com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 289c1b55c9541489481df5cc06664110, type: 3} m_UseUCBPForAssetBundles: 0