Skip to content

ci: add hlsl validation#1145

Merged
alandtse merged 18 commits into
community-shaders:devfrom
alandtse:smart_build
Jun 15, 2025
Merged

ci: add hlsl validation#1145
alandtse merged 18 commits into
community-shaders:devfrom
alandtse:smart_build

Conversation

@alandtse
Copy link
Copy Markdown
Collaborator

@alandtse alandtse commented Jun 15, 2025

Summary by CodeRabbit

  • New Features

    • Introduced a dedicated shader validation step in the build process, allowing shaders to be checked independently from the main build.
    • Added manual workflow inputs to control C++ build and shader validation steps in CI/CD.
    • Added custom build targets to generate shader validation configuration files automatically.
  • Documentation

    • Added a README explaining build configuration files used for shader validation in CI/CD workflows.
    • Provided detailed instructions and tooling for generating shader validation configurations from Skyrim log files.
  • Chores

    • Improved workflow modularity and clarity with renamed jobs, refined triggers, and enhanced artifact retention policies.

Copilot AI review requested due to automatic review settings June 15, 2025 10:47
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Jun 15, 2025

Walkthrough

This update modularizes the CI/CD workflow by separating C++ build and shader validation into distinct jobs, introduces workflow inputs for manual control, and adds generate_shader_configs and prepare_shaders CMake targets for shader validation support. Documentation for build configuration files and a PowerShell script to generate them are also added.

Changes

File(s) Change Summary
.github/configs/README.md Added documentation explaining build configuration files for shader validation in CI/CD, including usage and generation instructions.
.github/configs/generate-shader-configs.ps1 Added PowerShell script to detect Skyrim installs, validate logs, and generate shader validation YAML configuration files using hlslkit.
.github/workflows/build.yaml Modularized workflow: separated C++ build and shader validation jobs, added manual inputs, refined triggers, caching, and artifact retention.
CMakeLists.txt Added generate_shader_configs and prepare_shaders custom targets to support shader validation; minor formatting adjustment.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant GitHub Actions
    participant CMake
    participant PowerShell Script
    participant Python/hlslkit

    User->>GitHub Actions: Trigger workflow (PR or manual)
    GitHub Actions->>check-changes: Analyze file changes
    alt C++ build needed
        GitHub Actions->>cpp-build: Build C++ plugin/addons
        cpp-build->>CMake: Build targets
    end
    alt Shader validation needed
        GitHub Actions->>shader-validation: Run shader validation job
        shader-validation->>CMake: Run prepare_shaders target
        shader-validation->>Python/hlslkit: Validate shaders
        Python/hlslkit-->>shader-validation: Report results
    end
    User->>PowerShell Script: Run generate-shader-configs.ps1 (manual or CI)
    PowerShell Script->>Skyrim Log Files: Detect and validate logs
    PowerShell Script->>hlslkit-generate: Generate YAML config files
    PowerShell Script-->>User: Output results
    GitHub Actions->>prerelease/release: Post-release steps (if applicable)
Loading

Suggested reviewers

  • doodlum

Poem

In the warren where workflows hop and run,
Now shaders and C++ each have their own fun.
With docs in the burrow and targets anew,
CI builds are smoother—hippity-hoo!
A rabbit approves, with a twitch of the nose,
For modular carrots are the best, one knows! 🥕


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds HLSL shader validation support to the CI pipeline.

  • Introduces a new CMake custom target ("prepare_shaders") to allow shader preparation independent of the full build.
  • Updates the GitHub Actions workflow to include a dedicated shader-validation job with relevant input conditions and caching adjustments.
  • Updates documentation for configuration files used in shader validation.

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

File Description
CMakeLists.txt Added a custom target for preparing shaders, enabling independent CI validation.
.github/workflows/build.yaml Modified job names, inputs, and conditional triggers; added the shader-validation job.
.github/configs/README.md Added documentation for the CI configuration files related to shader validation.
Comments suppressed due to low confidence (1)

.github/workflows/build.yaml:155

  • Ensure that the check-changes job sets the 'hlsl-should-build' output; otherwise, this condition may not work as intended.
needs.check-changes.outputs.hlsl-should-build == 'true'

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
.github/configs/README.md (1)

5-8: Unify bullet punctuation and fix grammar.

The list items are missing terminal punctuation and the third bullet needs an article and semicolon for clarity. For example:

-   Defines shader compilation parameters, known warnings, and expected build configurations
+   Defines shader compilation parameters, known warnings, and expected build configurations.

-   Used by the GitHub Actions workflow to validate shader compilation during CI builds
+   Used by the GitHub Actions workflow to validate shader compilation during CI builds.

-   Not intended for direct user interaction - this is build infrastructure configuration
+   Not intended for direct user interaction; this is a build infrastructure configuration.
🧰 Tools
🪛 LanguageTool

[grammar] ~7-~7: Make sure that the noun ‘build’ is correct. Did you mean the past participle “built”?
Context: ...d for direct user interaction - this is build infrastructure configuration ## Files ...

(BE_VB_OR_NN)

.github/workflows/build.yaml (2)

29-30: Extend PR trigger to include HLSL shader files.

Adding **.hlsl and **.hlsli ensures that shader changes correctly trigger CI. Consider using **/*.hlsl syntax for consistency, but the current patterns will match as intended.


211-214: Validate shaders with strict warning policy.

Running hlslkit-compile with --max-warnings 0 and suppressing known non-critical warnings (X1519) enforces shader quality. Consider pinning the hlslkit version to maintain reproducibility.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 36328d7 and 917f6be.

📒 Files selected for processing (3)
  • .github/configs/README.md (1 hunks)
  • .github/workflows/build.yaml (9 hunks)
  • CMakeLists.txt (1 hunks)
🧰 Additional context used
🪛 LanguageTool
.github/configs/README.md

[grammar] ~7-~7: Make sure that the noun ‘build’ is correct. Did you mean the past participle “built”?
Context: ...d for direct user interaction - this is build infrastructure configuration ## Files ...

(BE_VB_OR_NN)


[uncategorized] ~11-~11: Loose punctuation mark.
Context: ... ## Files - shader-validation.yaml: Configuration for shader compilation va...

(UNLIKELY_OPENING_PUNCTUATION)

🔇 Additional comments (12)
CMakeLists.txt (1)

190-196:

Details

✅ Verification successful

Validate shader preparation target dependencies and indentation.

The new prepare_shaders target depends on copy_shaders.stamp, but the variable HLSL_FILES (used upstream for shader dependencies) must be defined to track .hlsl/.hlsli inputs. Confirm that HLSL_FILES is globally populated, or introduce:

file(GLOB_RECURSE HLSL_FILES
    "${CMAKE_SOURCE_DIR}/package/Shaders/*.hlsl"
    "${CMAKE_SOURCE_DIR}/features/*/Shaders/*.hlsl"
)

Also ensure this block uses the same tab-based indentation as the rest of the file.


🏁 Script executed:

#!/bin/bash
# Verify that HLSL_FILES is defined in CMake files
rg -n "HLSL_FILES" -R .

Length of output: 428


🏁 Script executed:

#!/bin/bash
# Properly verify that HLSL_FILES is defined in any CMakeLists or included cmake modules
rg -n "HLSL_FILES" .

Length of output: 533


🏁 Script executed:

#!/bin/bash
# Inspect how copy_shaders.stamp is generated and its dependencies
rg -n "copy_shaders.stamp" -C 5 CMakeLists.txt

Length of output: 1614


prepare_shaders target dependencies and indentation verified

The HLSL_FILES variable is already populated in cmake/AddCXXFiles.cmake and exported via PARENT_SCOPE, so copy_shaders.stamp correctly tracks all .hlsl/.hlsli inputs. The prepare_shaders target depends on copy_shaders.stamp as intended, and the block uses the same tab-based indentation as the surrounding CMakeLists. No further changes required.

.github/workflows/build.yaml (11)

12-21: Add manual dispatch inputs for C++ build and shader validation.

Introducing build-cpp and validate-shaders workflow inputs gives precise control over which jobs run on manual trigger. The defaults (true) align with existing behavior. Ensure these inputs are properly documented for contributors.


87-96: Refine execution condition for cpp-build job.

The if now respects both manual dispatch (build-cpp) and file-change detection for C++ files. This dual gating prevents unnecessary builds while allowing manual overrides.


104-109: Use precise checkout parameters for forked PRs.

Specifying ref and repository ensures the correct heads are checked out when running on pull_request_target, avoiding permission and context mismatches.


122-126: Improve cache key for invalidation flexibility.

Incorporating inputs.cache-key-suffix into the cache key allows targeted cache busting. The fallback keys are well-ordered for optimal cache hits.


127-132: Upgrade run-cmake action and presets.

Bumping to lukka/run-cmake@v10 and using the ALL presets standardizes the build invocation. Confirm that v10 supports the same configurePreset/buildPreset arguments.

Please verify that lukka/run-cmake@v10 still accepts the configurePreset and buildPreset syntax used here.


146-147: Set artifact retention period.

Extending artifact retention to 30 days for dist-artifacts balances storage costs and troubleshooting needs.


148-157: Introduce shader-validation job with conditional execution.

The new job correctly gates on HLSL file changes and the validate-shaders input. This modularization keeps CI performant and flexible.


185-194: Isolate cache per shader validation configuration.

Using ${{ matrix.config.name }} in the cache key segregates caches for "Flatrim" and "VR" runs, preventing cross-contamination.


195-201: Prepare shaders with explicit target.

Invoking --target prepare_shaders isolates shader copying from the full build, speeding up validation. Ensure the buildPresetAdditionalArgs syntax is compatible with the action.


216-225: Upload shader validation logs on failure.

Uploading both new_issues.log and any .log ensures comprehensive debugging data. The 7-day retention period is reasonable for ephemeral shader errors.


227-229: Ensure prerelease waits for shader validation.

Adding shader-validation to the needs list guarantees that pre-release artifacts include validated shaders.

FlayaN
FlayaN previously requested changes Jun 15, 2025
Comment thread .github/configs/README.md Outdated
Comment thread .github/configs/README.md Outdated
@alandtse alandtse requested a review from FlayaN June 15, 2025 17:35
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 917f6be and f3a975a.

📒 Files selected for processing (1)
  • .github/workflows/build.yaml (9 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (16)
.github/workflows/build.yaml (16)

12-16: Introduce build-cpp workflow input
Defines a boolean input to manually trigger the C++ build job.

Please verify that comparing github.event.inputs.build-cpp to the string 'true' behaves as expected when type: boolean is used.


17-21: Introduce validate-shaders workflow input
Adds a boolean toggle for manual shader validation runs.

Confirm that github.event.inputs.validate-shaders == 'true' correctly triggers the shader-validation job with type: boolean.


29-30: Extend PR trigger patterns to include HLSL files
Includes .hlsl and .hlsli in pull_request_target paths so shader changes kick off validation.


48-48: Rename and clarify the change-check job
Updating the job name to “Check for changes in PRs” improves readability.


101-101: Add cpp-build job for building plugin and addons
Defines the Windows build workflow for C++ components.


103-110: Review cpp-build conditional
The if condition gates C++ builds on manual inputs or file-changes detection.


118-123: Use dynamic checkout ref and repository
Switching to ref: ${{ github.event.pull_request.head.ref || github.ref }} and dynamic repository ensures PR forks are correctly built.


141-146: Invoke CMake build with run-cmake
Using lukka/run-cmake@v10 is consistent with existing build steps.


160-161: Set retention-days for dist artifacts
Extends artifact availability to 30 days for downstream consumption.


162-170: Add shader-validation job with change-based gating
New job to validate HLSL shaders on Windows, triggered by manual input or detected .hlsl changes.


209-214: Validate buildPresetAdditionalArgs format
Confirm that buildPresetAdditionalArgs: "['--target prepare_shaders']" is parsed correctly by lukka/run-cmake.


242-243: Chain shader-validation into prerelease step
Updating needs: [cpp-build, shader-validation] ensures shaders are validated before prerelease.


298-299: Update prerelease action name and tag
Using dynamic version and PR number in release metadata improves traceability.


311-312: Update auto-generated prerelease action
Maintains consistency with custom-notes path while using GitHub-generated notes.


328-329: Update download link comment message
Points directly to the prerelease tag artifact in the repo.


331-335: Incorporate shader-validation into release job
Ensuring shader checks are part of both prerelease and final release workflows.

Comment thread .github/workflows/build.yaml
Comment thread .github/workflows/build.yaml Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
.github/configs/README.md (1)

20-26: Small grammar nitpick in prerequisite sentence

“wait for compilation to complete to generate” reads awkwardly. Consider:

-4. **Run the Game**: Launch and wait for compilation to complete to generate shader compilation logs
+4. **Run the Game**: Launch and wait for compilation to finish; this will generate the shader-compilation logs

Purely cosmetic—feel free to ignore if style differs.

🧰 Tools
🪛 LanguageTool

[style] ~25-~25: The verb ‘complete’ normally expects the gerund. Consider using “generating”.
Context: ...ch and wait for compilation to complete to generate shader compilation logs The required l...

(TO_VB_TO_VB)

.github/configs/generate-shader-configs.ps1 (1)

186-202: Superfluous back-tick before colon in error message

Write-Error "Error generating $OutputName`: $($_.Exception.Message)"

The back-tick escapes the following space, not the colon, resulting in a literal back-tick in the output. Remove it:

-Write-Error "Error generating $OutputName`: $($_.Exception.Message)"
+Write-Error "Error generating $OutputName: $($_.Exception.Message)"
📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f3a975a and dcc0611.

📒 Files selected for processing (3)
  • .github/configs/README.md (1 hunks)
  • .github/configs/generate-shader-configs.ps1 (1 hunks)
  • CMakeLists.txt (2 hunks)
🧰 Additional context used
🪛 LanguageTool
.github/configs/README.md

[uncategorized] ~7-~7: Loose punctuation mark.
Context: ... ## Files - shader-validation.yaml: Configuration for shader compilation va...

(UNLIKELY_OPENING_PUNCTUATION)


[style] ~25-~25: The verb ‘complete’ normally expects the gerund. Consider using “generating”.
Context: ...ch and wait for compilation to complete to generate shader compilation logs The required l...

(TO_VB_TO_VB)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (1)
CMakeLists.txt (1)

205-210:

Details

❓ Verification inconclusive

prepare_shaders target is gated behind deployment options—CI may not define them

prepare_shaders is created only when AUTO_PLUGIN_DEPLOYMENT OR AIO_ZIP_TO_DIST is ON.
If the new GitHub Actions job invokes cmake --build … --target prepare_shaders without setting either option, the build will error with “Unknown build target”.

Either:

  1. Move the add_custom_target(prepare_shaders …) outside the conditional block, or
  2. Explicitly pass -DAIO_ZIP_TO_DIST=ON (or similar) from the workflow.

Please verify the workflow behaviour.


🏁 Script executed:

#!/bin/bash
# Show the context around the prepare_shaders target
grep -R -nC3 "add_custom_target.*prepare_shaders" CMakeLists.txt

# Check where the AUTO_PLUGIN_DEPLOYMENT and AIO_ZIP_TO_DIST variables are used
grep -R -n "AUTO_PLUGIN_DEPLOYMENT" CMakeLists.txt
grep -R -n "AIO_ZIP_TO_DIST" CMakeLists.txt

Length of output: 1028


🏁 Script executed:

#!/bin/bash
# Display the AUTO_PLUGIN_DEPLOYMENT/AIO_ZIP_TO_DIST block and surrounding lines
sed -n '180,260p' CMakeLists.txt

Length of output: 3539


Ensure prepare_shaders target is always available in CI

The prepare_shaders target is currently defined inside this block:

CMakeLists.txt (around lines 185–210):

if(AUTO_PLUGIN_DEPLOYMENT OR AIO_ZIP_TO_DIST)
  #
  add_custom_target(prepare_shaders
    DEPENDS copy_shaders.stamp
    COMMENT "Preparing shaders for validation"
  )
endif()

Note that AIO_ZIP_TO_DIST defaults to ON, so by default the target exists—but if your CI workflow ever overrides it (or leaves both flags OFF), running

cmake --build . --target prepare_shaders

will error with “Unknown build target.”

Either

  • Move the add_custom_target(prepare_shaders …) invocation outside the if(...) guard so it’s always defined, or
  • Explicitly pass -DAIO_ZIP_TO_DIST=ON (or -DAUTO_PLUGIN_DEPLOYMENT=ON) in your CI job

Please verify how your GitHub Actions workflow configures these flags and update accordingly.

Comment thread CMakeLists.txt Outdated
Comment thread .github/configs/generate-shader-configs.ps1
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 15, 2025

✅ A pre-release build is available for this PR:
Download

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
.github/workflows/build.yaml (1)

136-140: Cache key context correctly updated
Switching to github.event.inputs.cache-key-suffix fixes the invalid context issue flagged earlier.

🧹 Nitpick comments (2)
.github/workflows/build.yaml (2)

103-110: Conditional logic for cpp-build is correct but verbose
The combined workflow_dispatch and pull_request_target conditions work as intended. For readability, consider extracting parts into named expressions or commenting each branch.


221-224: Pin hlslkit for reproducibility
Installing directly from the main branch may introduce breakages. Consider locking to a commit hash or version tag.

📜 Review details

Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dcc0611 and dd02ff8.

📒 Files selected for processing (3)
  • .github/configs/generate-shader-configs.ps1 (1 hunks)
  • .github/workflows/build.yaml (9 hunks)
  • CMakeLists.txt (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • CMakeLists.txt
  • .github/configs/generate-shader-configs.ps1
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: Build plugin and addons
🔇 Additional comments (12)
.github/workflows/build.yaml (12)

12-21: Add manual dispatch inputs for C++ build and shader validation
Providing build-cpp and validate-shaders boolean inputs improves workflow flexibility for manual triggers.


29-30: Include HLSL file patterns in pull_request_target
Adding **.hlsl and **.hlsli ensures shader changes drive downstream validation.


48-48: Skip: trivial job renaming
Renaming the job to "Check for changes in PRs" is descriptive and needs no further review.


121-123: Explicit checkout of PR head ref and repo
Using both ref and repository ensures the correct branch and fork are checked out in PR contexts.


160-161: Add retention-days on dist artifacts
Setting retention-days: 30 ensures build artifacts are kept for a sensible period without manual cleanup.


162-172: Introduce new shader-validation job
The job is gated by both PR HLSL changes and the new validate-shaders input, aligning validation with code changes and manual triggers.


199-208: Cache CMake build output in shader-validation
Reusing the build cache keyed by matrix.config.name and cache-key-suffix will speed up repeated validation runs.


209-214: Verify buildPresetAdditionalArgs syntax
The value is passed as a single quoted string. Please confirm luka/run-cmake@v10 accepts this format (vs. a YAML list) for --target prepare_shaders.


225-228: Shader compilation step is well configured
Using --max-warnings 0 with suppression flag X1519 enforces strict validation while allowing known benign warnings.


229-238: Upload shader validation logs with retention
Artifacts are retained for 7 days and if-no-files-found: ignore avoids failures when no new issues are present.


241-243: Extend prerelease to depend on shader-validation
Ensuring both cpp-build and shader-validation complete before prerelease avoids shipping unvalidated shaders.


331-336: Extend release to depend on shader-validation
Aligning the final release step with shader validation maintains consistency across manual and tag-based releases.

@alandtse alandtse dismissed FlayaN’s stale review June 15, 2025 21:42

Resolved so we can merge.

@alandtse alandtse merged commit 7e15793 into community-shaders:dev Jun 15, 2025
8 checks passed
alandtse added a commit that referenced this pull request Jun 20, 2025
@alandtse alandtse deleted the smart_build branch June 20, 2025 17:30
davo0411 pushed a commit to davo0411/skyrim-community-shaders that referenced this pull request Jun 21, 2025
This was referenced Jun 21, 2025
alandtse added a commit to alandtse/open-shaders that referenced this pull request Jul 20, 2025
@coderabbitai coderabbitai Bot mentioned this pull request Mar 18, 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.

4 participants