Repository navigation
Releases
Releases · SalyyS1/shadersmith
shadersmith v0.3.0
Highlights in shadersmith v0.3.0
- Official Minecraft
26.3(97.1) Vanilla Contract Dataset: Extracted full vanilla core shader, GLSL include, post-effect, andstd140uniform block layouts for official release26.3(pack_format97.1), withmajor.minorformat tuple resolution (97.1) and release-aware--mc-rangetraversal. - Post-Effect Graph, Sampler, and
std140Block Cross-Checking (SM065..SM068):SM065: Validates internal"targets"and"external_targets"across pass"inputs"and"output", catching undeclared framebuffers and read-before-write pass ordering bugs.SM066: Cross-checks passinputs[].sampler_name(<Name>Sampler) againstuniform sampler2Ddeclarations across pack fragment shaders and transitive includes.SM067: Verifies pass"uniforms"member names, types, and positional order against GLSLlayout(std140) uniformblock declarations.SM068: Reports malformedpost_effect/*.jsonfiles with syntax diagnostics, while refiningSM062to recognize valid vanilla post vertex shaders (minecraft:post/rotscale) and auto-migrate stalescreenquadpaths.
- Circular Include Detection (
SM033), Comment-Safe GLSL Analysis, andpack.mcmetaBounds Validation (SM075):SM033: Deterministic DFS cycle detection across#includeand#moj_importchains.- Line-preserving
//and/* ... */comment stripping prevents false positives on commented-out directives,gl_VertexID, samplers, and uniform blocks, while extendingSM050to catchflat/smooth/noperspective/centroidbare interface variables. SM075: Flags invertedmin_format..max_formatbounds and invalidoverlays.entriesdirectory names violating[a-zA-Z0-9_-]+.
- Rich OASIS SARIF v2.1.0 Catalog & GitHub Action
v0.3.0: Added--format sarif, fullRuleCatalogdescriptors (SM001..SM075) with%SRCROOT%relative URIs, andsarif-file/exit-codeoutputs onSalyyS1/shadersmith@v0.3.0. - Zero-Upload Browser GLSL & Overlay Inspector: Live at https://salyys1.github.io/shadersmith/ with client-side
.zipdecompression,1.21.4..26.3compatibility matrix,std140byte-offset diff explorer, and 1-click mechanical migration.
SHA-256 Checksum
shadersmith-0.3.0.jar:57dc3fb3e47f2fae4458c8a823b3df45c398aef512c7e3ff44da334ac9b01f03
ShaderSmith v0.2.0
ShaderSmith v0.2.0
Highlights
- Overlay-Aware Multi-Version Validation (
pack.mcmetaOverlays): Parsesoverlays.entriesacross legacy[min, max],{min_inclusive, max_inclusive}, and modernmin_format/max_formatschemas, stacks matching overlayassets/...files per target version duringcheck --mcandcheck --mc-range, and reports diagnostics at exact physical file paths for IDE and GitHub SARIF annotations. - New Shader & Post-Effect Rules (
SM032,SM064,SM074): Validates custom-namespace#include/#moj_importtargets across overlays (SM032), verifies custom post-effect.vsh/.fshpass sources (SM064), and flags missing or emptyoverlays.entriesdirectories (SM074). - Asset-Preserving
.zipMigration & Deterministic--zipOutput: Fixes.zipmigration so binary textures, fonts, models, andpack.mcmetaare safely extracted and preserved (with zip-slip path traversal guards), adds--zip <out.zip>byte-reproducible archive output, and printsresource-pack-sha1=<hex>forserver.properties. - Composite GitHub Action (
action.yml): RunSalyyS1/shadersmith@v0.2.0directly in GitHub Actions workflows with SARIF v2.1.0 Code Scanning integration.
Verification
- 39/39 JUnit tests passing on Java 21 (
./gradlew build --no-daemon).
v0.1.0
First release.
shadersmith checks a resource pack's core shaders against the version they are about to run on. The client
does not validate them against anything — it compiles whatever it is given and runs it — so a shader written
for one version can compile on the next and read the wrong uniform, because the contract it was written
against changed without an error saying so. shadersmith holds that contract per version, extracted from the
game's own files, and reports every place the pack disagrees with it, with the fix inline.
Run shadersmith check <pack>/ --mc <version>. See the README for the codes and what each one means.