Skip to content

unityfs: Unity 6000.3's ComputeShader layout, so stripped players keep GPU skinning - #857

Closed
capibawa wants to merge 1 commit into
seedds:mainfrom
capibawa:unity-6000-3-compute
Closed

capibawa wants to merge 1 commit into
seedds:mainfrom
capibawa:unity-6000-3-compute

Conversation

@capibawa

@capibawa capibawa commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

What and why

Hello Kitty Party Land 1.0.2 (01001340271EC000, Unity 6000.3.11f1) drew its characters as huge stretched triangles. The shader split reported that the ComputeShader objects (class 72, type hash 43a0948a…) in Data/Resources/unity default resources and Data/globalgamemanagers.assets had no type tree from a bundle and no layout in unityfs.py, so their kernels were left out. The run then logged the dispatched program has no compute shader where Unity's built-in Internal-Skinning dispatch should run, and the characters drew from vertex buffers it never wrote.

COMPUTE_6000_3 is the 2022.3 layout with an int resType after each resource's texDimension and threadGroupSize a staticvector again, written from AssetRipper's 6000.3.11f1 release tree.

Reference entry: a "Unity 6000.3" item under Unity ComputeShader objects, beside the 2017.4, 2019.4 and 2021.3 ones.

Checked

  • Tests: dm/gfx/tests/test_unity_known_trees.py (now listing the 6000.3 hash) passes. The GPU tests (make -C dm/gfx/tests GAME=<id> run) were not run.
  • Layout: matches all 159 nodes and alignment flags of the 6000.3.11f1 dump. All 11 ComputeShader objects in the two files read to their exact ends (Internal-Skinning 40 kernels, Internal-BlendShape 9).
  • Games run: Hello Kitty Party Land 1.0.2 (v131072). The split finds 92 compute shaders instead of 1, the run logs no shader missing from the map and no dispatch without a compute shader, and the characters draw correctly on the Mac.
  • Devices and OS: M3 Pro, macOS 27.0.
  • Reach to other games: scripts/regress.py check --games was not run. The change only adds a KNOWN_TREES entry for a type hash no layout covered, which the split's second pass uses only for stripped files of that hash. Games of other Unity versions read exactly as before.

Docs

  • The finding is in its game note or its docs/reference/<subsystem>.md entry, and python3 dm/tools/docs_symptoms.py was run (the symptom index; an item under an existing entry, so it did not change)
  • A chain tool changed: not applicable (unityfs.py reads Unity files for the split; the translation chain is untouched)
  • No game files, keys or data extracted from a game in the change or the attachments

…p GPU skinning

Hello Kitty Party Land's characters drew as huge stretched triangles. The split
reported that the ComputeShader objects (class 72, type hash 43a0948a...) in
Data/Resources/unity default resources and Data/globalgamemanagers.assets had no
type tree from a bundle and no layout in unityfs.py, so their kernels were left
out; the run then logged "the dispatched program has no compute shader" where
Unity's built-in Internal-Skinning dispatch should run, and the characters drew
from vertex buffers it never wrote.

COMPUTE_6000_3 is the 2022.3 layout with an int resType after each resource's
texDimension and threadGroupSize a staticvector again, written from AssetRipper's
StructsDump/release/6000.3.11f1.dump.

Checked: it matches all 159 nodes and alignment flags of that dump; all 11
ComputeShader objects in the two files read to their exact ends
(Internal-Skinning 40 kernels, Internal-BlendShape 9); the split finds 92 compute
shaders instead of 1 with no shader missing from the map at run time, and the Mac
app draws the characters right. test_unity_known_trees lists the new hash. Docs:
a Unity 6000.3 item under "Unity ComputeShader objects" in
docs/reference/shaders.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R7xrTscy83tumn2qjtrv6a
@capibawa
capibawa force-pushed the unity-6000-3-compute branch from 3d3a19b to bfeca14 Compare November 1, 2026 20:42
seedds added a commit that referenced this pull request Nov 2, 2026
…p GPU skinning (#857)

Hello Kitty Party Land (Unity 6000.3.11f1) drew its characters as huge stretched
triangles. Its ComputeShader objects (class 72, type hash 43a0948a...) have no
type tree from a bundle and no layout in unityfs.py, so the split left out their
kernels, Unity's built-in Internal-Skinning among them. The run then logged "the
dispatched program has no compute shader" and the characters drew from vertex
buffers nothing wrote.

COMPUTE_6000_3 is the 2022.3 layout with an int resType after each resource's
texDimension and threadGroupSize a staticvector again. It is keyed by type hash and
used only for stripped files no bundle lends a tree to.

All 159 nodes and alignment flags match AssetRipper's 6000.3.0b4, 6000.3.0f1,
6000.3.11f1 and 6000.3.20f1 dumps, compared here. PR #857 and PR #791 report the same
hash on different games; those game results were not repeated here, since no game
with this hash is available. The fixture from PR #791 reads to its exact end and into
the split, and fails with the 2022.3 layout. Silver Pines (6000.3.15f1) already has
these kernels in its table without this layout.

PR #791's Shader layout is left out: its hash is not confirmed.

Co-authored-by: James <12531452+capibawa@users.noreply.github.com>
Co-authored-by: Tom Ramsden <13732780+gnosticgeek@users.noreply.github.com>
@seedds

seedds commented Nov 2, 2026

Copy link
Copy Markdown
Owner

Landed on main as ba366d2, with you credited as co-author. Thank you for the clear diagnosis.

The layout is yours. It is the same expression as in #791, so the commit consolidates the two: it adds #791's decoding fixture, and the docs entry keeps your Hello Kitty finding.

I compared the layout with AssetRipper's 6000.3.0b4, 6000.3.0f1, 6000.3.11f1 and 6000.3.20f1 dumps, and all 159 nodes and alignment flags match. I don't have a game with this hash here, so the docs record your game results as reported by this PR, not repeated.

@seedds seedds closed this Nov 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants