Skip to content

Commit

Permalink
[unity] SkeletonRenderTexture example components now provide a `sha…
Browse files Browse the repository at this point in the history
…derPasses` parameter.
  • Loading branch information
HaraldCsaszar committed Apr 29, 2024
1 parent d0da762 commit 9870692
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -154,6 +154,7 @@
- SkeletonGraphic: Added pre-defined SkeletonGraphic material sets for main workflow parameters in folders `spine-unity/Materials` instead of requiring manual copies:
`SkeletonGraphic-PMATexture` containing materials for premultiplied-alpha texture workflow (`Straight Alpha Texture` disabled) and `SkeletonGraphic-StaightAlphaTexture` containing materials for straight alpha texture workflow (`Straight Alpha Texture` enabled). These directories contain a set of materials with `CanvasGroup Compatible` disabled for usage with `Advanced - PMA Vertex Color` enabled at the component. Each directory also provides a subdirectory `CanvasGroupCompatible` with materials with `CanvasGroup Compatible` enabled for usage with `CanvasGroup` alpha (requiring `Advanced - PMA Vertex Color` disabled at the component).
- SkeletonGraphic: Added auto-detect functionality for parameters `Advanced` - `Tint Black`, `CanvasGroup Compatible` and `PMA Vertex Color`. If unsure which settings are correct, hit the `Detect` button next to each parameter, in top to bottom order, or the `Detect Settings` to detect all three. Also added automatic material assignment via a `Detect Material` button in the `Advanced` section and a `Detect` button next to the `Material` property at the top of the component Inspector, as well as next to the `Blend Mode Materials` section when using multiple canvas renderers with blend modes. The suitable material is selected based on these three settings, combined with texture settings (PMA or straight alpha texture settings). If you receive incorrect results, likely your texture settings are incorrectly setup for your PMA or Straight alpha texture export settings.
- `SkeletonRenderTexture` example components now provide a `shaderPasses` parameter to customize which passes are rendered to the `RenderTexture`. It defaults to `-1` for all passes to keep the existing behaviour. You might want to set it to `0` to only render the first pass e.g. to avoid issues when using a URP shader at the original skeleton.

- **Breaking changes**

Expand Down
Expand Up @@ -195,7 +195,8 @@ public struct TextureMaterialPair {

protected void RenderSingleMeshToRenderTexture (Mesh mesh, Material graphicMaterial, Texture texture) {
Material meshRendererMaterial = MeshRendererMaterialForTexture(texture);
commandBuffer.DrawMesh(mesh, transform.localToWorldMatrix, meshRendererMaterial, 0, -1);
foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(mesh, transform.localToWorldMatrix, meshRendererMaterial, 0, shaderPass);
Graphics.ExecuteCommandBuffer(commandBuffer);
}

Expand All @@ -204,7 +205,8 @@ public struct TextureMaterialPair {

for (int i = 0; i < meshCount; ++i) {
Material meshRendererMaterial = MeshRendererMaterialForTexture(textures[i]);
commandBuffer.DrawMesh(meshes[i], transform.localToWorldMatrix, meshRendererMaterial, 0, -1);
foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(meshes[i], transform.localToWorldMatrix, meshRendererMaterial, 0, shaderPass);
}
Graphics.ExecuteCommandBuffer(commandBuffer);
}
Expand Down
Expand Up @@ -186,9 +186,11 @@ public class SkeletonRenderTexture : SkeletonRenderTextureBase {
meshRenderer.GetPropertyBlock(propertyBlock);
meshRenderer.GetSharedMaterials(materials);

for (int i = 0; i < materials.Count; i++)
commandBuffer.DrawMesh(meshFilter.sharedMesh, transform.localToWorldMatrix,
materials[i], meshRenderer.subMeshStartIndex + i, -1, propertyBlock);
for (int i = 0; i < materials.Count; i++) {
foreach (int shaderPass in shaderPasses)
commandBuffer.DrawMesh(meshFilter.sharedMesh, transform.localToWorldMatrix,
materials[i], meshRenderer.subMeshStartIndex + i, shaderPass, propertyBlock);
}
Graphics.ExecuteCommandBuffer(commandBuffer);
}

Expand Down
Expand Up @@ -45,6 +45,10 @@ public abstract class SkeletonRenderTextureBase : MonoBehaviour {
protected Mesh quadMesh;
public RenderTexture renderTexture;
public Camera targetCamera;
[Tooltip("Shader passes to render to the RenderTexture. E.g. set the first element " +
"to -1 to render all shader passes, or set it to 0 to only render the first " +
"shader pass, which may be required when using URP.")]
public int[] shaderPasses = new int[1] { -1 };

protected CommandBuffer commandBuffer;
protected Vector2Int screenSize;
Expand Down
2 changes: 1 addition & 1 deletion spine-unity/Assets/Spine Examples/package.json
Expand Up @@ -2,7 +2,7 @@
"name": "com.esotericsoftware.spine.spine-unity-examples",
"displayName": "spine-unity Runtime Examples",
"description": "This plugin provides example scenes and scripts for the spine-unity runtime.",
"version": "4.2.27",
"version": "4.2.28",
"unity": "2018.3",
"author": {
"name": "Esoteric Software",
Expand Down

0 comments on commit 9870692

Please sign in to comment.