Optimization + Start of clustering

This commit is contained in:
2025-10-20 19:28:00 +02:00
parent 8124165e9b
commit 16ffd2cb57
11 changed files with 1173 additions and 125 deletions

View File

@ -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<BatchData> inputHits;
RWStructuredBuffer<int4> cellSums; // xyz = somme positions, w = somme maxDistance
RWStructuredBuffer<uint> cellCounts; // nombre d'éléments par cellule
AppendStructuredBuffer<BatchData> 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);
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 7b67ac486de90db48bc81c43fae83845
ComputeShaderImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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);
}
}

View File

@ -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: []

View File

@ -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;
@ -29,10 +29,31 @@ public class VoxelRaycastGpuManager
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);
@ -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();
}
}

View File

@ -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<VoxelTreeDebugger>();
if (dbg) dbg.root = root;
gpuRayCaster = new VoxelRaycastGpuManager(computeShader, root);
gpuRayCaster = new VoxelRaycastGpuManager(computeShader, clusteringShader, root);
}
// This function replaces pos => pos.magnitude < 100f

8
Assets/Settings.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8c2a84cff8d04a94c8c462293e8dd112
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 40a945ad85a306045b49fa05807b0b34
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 06ffdc248d6e2de4fb066396107cd4a5
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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