diff --git a/CHANGELOG.md b/CHANGELOG.md index f0a34c2..b146442 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [0.6.2] – 2022-12-10 + +Officially supports Entities [1.0.0 prerelease 15] + +### Changed + +- Updated Kinemation to v0.6.2 + ## [0.6.1] – 2022-11-28 Officially supports Entities [1.0.0 prerelease 15] diff --git a/Core/Math/Rng.cs b/Core/Math/Rng.cs index 3ee5199..7cc1ab7 100644 --- a/Core/Math/Rng.cs +++ b/Core/Math/Rng.cs @@ -2,8 +2,6 @@ using Unity.Entities; using Unity.Mathematics; -// Todo: Need an RngForIJobEntity that avoids EntityInQueryIndex. - namespace Latios { /// diff --git a/Documentation~/Kinemation Animation and Rendering/CHANGELOG.md b/Documentation~/Kinemation Animation and Rendering/CHANGELOG.md index e970b76..968b70d 100644 --- a/Documentation~/Kinemation Animation and Rendering/CHANGELOG.md +++ b/Documentation~/Kinemation Animation and Rendering/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [0.6.2] – 2022-12-10 + +Officially supports Entities [1.0.0 prerelease 15] + +### Improved + +- Kinemation renderer now uses a fixed frame count when recycling rendering + buffers instead of an async readback, which prevented devices from going + into a sleep state + ## [0.6.1] – 2022-11-28 Officially supports Entities [1.0.0 prerelease 15] diff --git a/Documentation~/Kinemation Animation and Rendering/README.md b/Documentation~/Kinemation Animation and Rendering/README.md index a609f96..7556385 100644 --- a/Documentation~/Kinemation Animation and Rendering/README.md +++ b/Documentation~/Kinemation Animation and Rendering/README.md @@ -193,8 +193,6 @@ that version.* for this in a future release which will be more extensible and customizable. - Skeletons are uploaded to the GPU multiple times in a frame if different LODs are used in different culling passes. -- GPU uploads are done in a way that prevent the processors from going into an - idle state. ## Near-Term Roadmap diff --git a/Kinemation/Internal/ComputeBufferTrackingPool.cs b/Kinemation/Internal/ComputeBufferTrackingPool.cs index 0bf1366..2dffbf7 100644 --- a/Kinemation/Internal/ComputeBufferTrackingPool.cs +++ b/Kinemation/Internal/ComputeBufferTrackingPool.cs @@ -326,72 +326,28 @@ public void Dispose() struct FencePool : IDisposable { - struct TrackedFence - { - public ComputeBuffer buffer; - public uint frameId; - public AsyncGPUReadbackRequest request; - } - uint m_currentFrameId; uint m_recoveredFrameId; - - List m_fencesInFlight; - List m_fencesInPool; + int m_numberOfFramesToWait; public uint CurrentFrameId => m_currentFrameId; public uint RecoveredFrameId => m_recoveredFrameId; public FencePool(bool dummy) { - m_fencesInFlight = new List(); - m_fencesInPool = new List(); - m_currentFrameId = 1; - m_recoveredFrameId = 0; + m_numberOfFramesToWait = Unity.Rendering.SparseUploader.NumFramesInFlight; + m_currentFrameId = (uint)m_numberOfFramesToWait; + m_recoveredFrameId = 0; } public void Update() { - for (int i = 0; i < m_fencesInFlight.Count; i++) - { - var fence = m_fencesInFlight[i]; - if (fence.request.done) - { - if (IsEqualOrNewer(fence.frameId, m_recoveredFrameId)) - m_recoveredFrameId = fence.frameId; - m_fencesInPool.Add(fence); - m_fencesInFlight.RemoveAtSwapBack(i); - i--; - } - } - - TrackedFence newFence; - if (m_fencesInPool.Count > 0) - { - newFence = m_fencesInPool[0]; - m_fencesInPool.RemoveAtSwapBack(0); - } - else - { - newFence = new TrackedFence - { - buffer = new ComputeBuffer(1, 4, ComputeBufferType.Default, ComputeBufferMode.Immutable), - }; - } - - newFence.frameId = m_currentFrameId; - newFence.request = AsyncGPUReadback.Request(newFence.buffer); - m_fencesInFlight.Add(newFence); - + m_recoveredFrameId++; m_currentFrameId++; } public void Dispose() { - foreach (var buffer in m_fencesInPool) - buffer.buffer.Dispose(); - foreach (var buffer in m_fencesInFlight) - buffer.buffer.Dispose(); } } diff --git a/PsyshockPhysics/Physics/Spatial/Queries/Physics.ColliderCast.cs b/PsyshockPhysics/Physics/Spatial/Queries/Physics.ColliderCast.cs index 4cc3591..7e4bf45 100644 --- a/PsyshockPhysics/Physics/Spatial/Queries/Physics.ColliderCast.cs +++ b/PsyshockPhysics/Physics/Spatial/Queries/Physics.ColliderCast.cs @@ -999,7 +999,7 @@ public static bool ColliderCast(in ConvexCollider convexToCast, result = default; return false; } - // Todo: Capsule + public static bool ColliderCast(in ConvexCollider convexToCast, in RigidTransform castStart, float3 castEnd, diff --git a/README.md b/README.md index e2fe890..0573d31 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](Documentation~/media/bf2cb606139bb3ca01fe1c4c9f92cdf7.png) -# Latios Framework Packages for DOTS – [0.6.1] +# Latios Framework Packages for DOTS – [0.6.2] The packages contained in this repository are packages built upon Unity DOTS which I use for my own personal hobbyist game development. All packages are @@ -32,6 +32,8 @@ survey**](https://docs.google.com/forms/d/e/1FAIpQLSfxgFumJvhwjzi-r7L7rGssPoeSLX spatialized sounds and music streaming - [Kinemation](Documentation~/Kinemation%20Animation%20and%20Rendering/README.md) – Authored animation, simulated animation, and everything in between +- Latios Transforms – A novel QVVS transform system designed to be fast, + intuitive, and flexible (Coming in 0.7) - Mach-Axle AI – An infinite axis utility evaluator designed for high throughput (No public release) - Life FX – VFX simulations which add immersion to stylized worlds (No public diff --git a/package.json b/package.json index c31b8d6..f8ddce3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.latios.latiosframework", "displayName": "Latios Framework for DOTS", - "version": "0.6.1", + "version": "0.6.2", "unity": "2022.2", "description": "Latios Framework for DOTS is a collection of tools, algorithms, and API extensions developed by a hardcore hobbyist game developer.\n\nThis package includes all of the following packages:\n\u25aa Core\n\u25aa Psyshock Physics\n\u25aa Myri Audio\n\u25aa Kinemation Animation and Rendering\n\nExamples: \n\u25aa Latios Space Shooter Sample - https://github.com/Dreaming381/lsss-wip/tree/v0.4.5\n\u25aa Mini Demos - https://github.com/Dreaming381/LatiosFrameworkMiniDemos", "dependencies": {