Optimization + Start of clustering
This commit is contained in:
81
Assets/Assets/Shader/VoxelBatchCluster.compute
Normal file
81
Assets/Assets/Shader/VoxelBatchCluster.compute
Normal 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);
|
||||
}
|
||||
7
Assets/Assets/Shader/VoxelBatchCluster.compute.meta
Normal file
7
Assets/Assets/Shader/VoxelBatchCluster.compute.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b67ac486de90db48bc81c43fae83845
|
||||
ComputeShaderImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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: []
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@ -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
8
Assets/Settings.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8c2a84cff8d04a94c8c462293e8dd112
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/Settings/Build Profiles.meta
Normal file
8
Assets/Settings/Build Profiles.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40a945ad85a306045b49fa05807b0b34
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
828
Assets/Settings/Build Profiles/Windows.asset
Normal file
828
Assets/Settings/Build Profiles/Windows.asset
Normal 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:
|
||||
8
Assets/Settings/Build Profiles/Windows.asset.meta
Normal file
8
Assets/Settings/Build Profiles/Windows.asset.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 06ffdc248d6e2de4fb066396107cd4a5
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user