Skip to content

Compatibility

TonyMax edited this page Oct 3, 2023 · 1 revision

There is few things we should care when talking about using NSprites in real projects. Since this package uses GPU instancing and ComputeBuffer on CPU side with StructuredBuffer<T> on GPU side (in shader) to send sprites data, we need platform and Graphics APU support this two.

So you can see Platform and Graphics API compatibility tables.

Graphics API

This is complicated a bit, because you can run any of APIs, but some doesn't support all NSprites feature (PropertyUpdateMode). Direct3D11, OpenGLCore and OpenGLES3 don't support Reactive and Static update modes, using this modes producing graphic artifacts. Though you can use EachUpdate which pretty stable.

Though I have several ideas how I can try to bring full support for listed APIs.

Graphics API Description
Direct3D11 ⚠️ only EachUpdate mode
Direct3D12 ✅ supported
Vulkan ✅ supported
OpenGLCore ⚠️ only EachUpdate mode
OpenGLES3 ⚠️ only EachUpdate mode

⚠️ NOTE: unity by default sets graphics API automatically to best depending on your current platform, so it can be Direct3D11 in most cases, which have problems with Static and Reactive update modes, so select more suitable API or use only EachUpdate mode.

Platform

In terms of platform we sometimes have problems with using ComputeBuffer, because some platforms don't support it, and some have limited StructuredBuffer<T> count. Down below you can see table with current state of what we know about compatibility on platforms. This information will be updated with more details.

If you have any information please share.

Platform Description
PC ✅ supported
WebGL ⛔ can't use ComputeBuffer
Android X ❔ not fully checked
Android 9 ⛔ can't use StructuredBuffer
iOS ❓ not checked