添加插件

This commit is contained in:
2025-11-10 00:08:26 +08:00
parent 4059c207c0
commit 76f80db694
2814 changed files with 436400 additions and 178 deletions

View File

@@ -0,0 +1,42 @@
using UnityEngine;
namespace Obi
{
public class ComputeBoxQuery
{
private ComputeShader shader;
private int kernel;
public ComputeBoxQuery()
{
shader = GameObject.Instantiate(Resources.Load<ComputeShader>("Compute/BoxShapeQuery"));
kernel = shader.FindKernel("GenerateResults");
}
public void GetResults(ComputeSolverImpl solver, SpatialQueries world, GraphicsBuffer transforms, GraphicsBuffer shapes, GraphicsBuffer results)
{
shader.SetInt("maxContacts", ComputeColliderWorld.maxContacts);
shader.SetInt("pointCount", solver.simplexCounts.pointCount);
shader.SetInt("edgeCount", solver.simplexCounts.edgeCount);
shader.SetInt("triangleCount", solver.simplexCounts.triangleCount);
shader.SetInt("surfaceCollisionIterations", solver.abstraction.parameters.surfaceCollisionIterations);
shader.SetFloat("surfaceCollisionTolerance", solver.abstraction.parameters.surfaceCollisionTolerance);
shader.SetFloat("collisionMargin", solver.abstraction.parameters.collisionMargin);
shader.SetBuffer(kernel, "worldToSolver", solver.worldToSolverBuffer);
shader.SetBuffer(kernel, "simplices", solver.simplices);
shader.SetBuffer(kernel, "positions", solver.positionsBuffer);
shader.SetBuffer(kernel, "orientations", solver.orientationsBuffer);
shader.SetBuffer(kernel, "velocities", solver.velocitiesBuffer);
shader.SetBuffer(kernel, "principalRadii", solver.principalRadiiBuffer);
shader.SetBuffer(kernel, "transforms", transforms);
shader.SetBuffer(kernel, "shapes", shapes);
shader.SetBuffer(kernel, "contactPairs", world.contactPairs);
shader.SetBuffer(kernel, "contactOffsetsPerType", world.contactOffsetsPerType);
shader.SetBuffer(kernel, "results", results);
shader.SetBuffer(kernel, "dispatchBuffer", world.dispatchBuffer);
shader.DispatchIndirect(kernel, world.dispatchBuffer, 32 + 16 * (int)QueryShape.QueryType.Box);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 8956fcafa2f984a80a9448fb71a11c7d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,42 @@
using UnityEngine;
namespace Obi
{
public class ComputeRayQuery
{
private ComputeShader shader;
private int kernel;
public ComputeRayQuery()
{
shader = GameObject.Instantiate(Resources.Load<ComputeShader>("Compute/RayShapeQuery"));
kernel = shader.FindKernel("GenerateResults");
}
public void GetResults(ComputeSolverImpl solver, SpatialQueries world, GraphicsBuffer transforms, GraphicsBuffer shapes, GraphicsBuffer results)
{
shader.SetInt("maxContacts", ComputeColliderWorld.maxContacts);
shader.SetInt("pointCount", solver.simplexCounts.pointCount);
shader.SetInt("edgeCount", solver.simplexCounts.edgeCount);
shader.SetInt("triangleCount", solver.simplexCounts.triangleCount);
shader.SetInt("surfaceCollisionIterations", solver.abstraction.parameters.surfaceCollisionIterations);
shader.SetFloat("surfaceCollisionTolerance", solver.abstraction.parameters.surfaceCollisionTolerance);
shader.SetFloat("collisionMargin", solver.abstraction.parameters.collisionMargin);
shader.SetBuffer(kernel, "worldToSolver", solver.worldToSolverBuffer);
shader.SetBuffer(kernel, "simplices", solver.simplices);
shader.SetBuffer(kernel, "positions", solver.positionsBuffer);
shader.SetBuffer(kernel, "orientations", solver.orientationsBuffer);
shader.SetBuffer(kernel, "velocities", solver.velocitiesBuffer);
shader.SetBuffer(kernel, "principalRadii", solver.principalRadiiBuffer);
shader.SetBuffer(kernel, "transforms", transforms);
shader.SetBuffer(kernel, "shapes", shapes);
shader.SetBuffer(kernel, "contactPairs", world.contactPairs);
shader.SetBuffer(kernel, "contactOffsetsPerType", world.contactOffsetsPerType);
shader.SetBuffer(kernel, "results", results);
shader.SetBuffer(kernel, "dispatchBuffer", world.dispatchBuffer);
shader.DispatchIndirect(kernel, world.dispatchBuffer, 32 + 16 * (int)QueryShape.QueryType.Ray);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: df812762d482f4e8c86a698f8062b99a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,42 @@
using UnityEngine;
namespace Obi
{
public class ComputeSphereQuery
{
private ComputeShader shader;
private int kernel;
public ComputeSphereQuery()
{
shader = GameObject.Instantiate(Resources.Load<ComputeShader>("Compute/SphereShapeQuery"));
kernel = shader.FindKernel("GenerateResults");
}
public void GetResults(ComputeSolverImpl solver, SpatialQueries world, GraphicsBuffer transforms, GraphicsBuffer shapes, GraphicsBuffer results)
{
shader.SetInt("maxContacts", ComputeColliderWorld.maxContacts);
shader.SetInt("pointCount", solver.simplexCounts.pointCount);
shader.SetInt("edgeCount", solver.simplexCounts.edgeCount);
shader.SetInt("triangleCount", solver.simplexCounts.triangleCount);
shader.SetInt("surfaceCollisionIterations", solver.abstraction.parameters.surfaceCollisionIterations);
shader.SetFloat("surfaceCollisionTolerance", solver.abstraction.parameters.surfaceCollisionTolerance);
shader.SetFloat("collisionMargin", solver.abstraction.parameters.collisionMargin);
shader.SetBuffer(kernel, "worldToSolver", solver.worldToSolverBuffer);
shader.SetBuffer(kernel, "simplices", solver.simplices);
shader.SetBuffer(kernel, "positions", solver.positionsBuffer);
shader.SetBuffer(kernel, "orientations", solver.orientationsBuffer);
shader.SetBuffer(kernel, "velocities", solver.velocitiesBuffer);
shader.SetBuffer(kernel, "principalRadii", solver.principalRadiiBuffer);
shader.SetBuffer(kernel, "transforms", transforms);
shader.SetBuffer(kernel, "shapes", shapes);
shader.SetBuffer(kernel, "contactPairs", world.contactPairs);
shader.SetBuffer(kernel, "contactOffsetsPerType", world.contactOffsetsPerType);
shader.SetBuffer(kernel, "results", results);
shader.SetBuffer(kernel, "dispatchBuffer", world.dispatchBuffer);
shader.DispatchIndirect(kernel, world.dispatchBuffer, 32 + 16 * (int)QueryShape.QueryType.Sphere);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c65e1510ca8a54514b0a6a06c37a48fc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: