@rosetears/aili-pi 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +109 -0
- package/THIRD_PARTY_NOTICES.md +64 -0
- package/extensions/index.ts +6 -0
- package/install.sh +5 -0
- package/manifests/adapter-evidence.json +45 -0
- package/manifests/capabilities.json +124 -0
- package/manifests/live-verification.json +26 -0
- package/manifests/provenance.json +71 -0
- package/manifests/roles.json +474 -0
- package/manifests/sbom.json +7797 -0
- package/manifests/skill-compatibility.json +8100 -0
- package/manifests/subagent-provenance.json +37 -0
- package/package.json +91 -0
- package/prompts/build.md +8 -0
- package/prompts/define.md +8 -0
- package/prompts/ideate.md +8 -0
- package/prompts/local-review.md +8 -0
- package/prompts/ship.md +8 -0
- package/roles/agent-evaluator.md +47 -0
- package/roles/ai-regression-scout.md +47 -0
- package/roles/browser-qa-runner.md +47 -0
- package/roles/code-reviewer.md +47 -0
- package/roles/code-scout.md +47 -0
- package/roles/convergence-reviewer.md +55 -0
- package/roles/doc-researcher.md +47 -0
- package/roles/e2e-artifact-runner.md +47 -0
- package/roles/implementer.md +47 -0
- package/roles/opensource-sanitizer.md +47 -0
- package/roles/plan-auditor.md +47 -0
- package/roles/pr-test-analyzer.md +47 -0
- package/roles/security-auditor.md +47 -0
- package/roles/silent-failure-reviewer.md +47 -0
- package/roles/spec-miner.md +47 -0
- package/roles/test-coverage-reviewer.md +47 -0
- package/roles/test-engineer.md +48 -0
- package/roles/web-performance-auditor.md +47 -0
- package/roles/web-researcher.md +47 -0
- package/scripts/apply-adapter-evidence.ts +73 -0
- package/scripts/bootstrap.sh +180 -0
- package/scripts/generate-provenance.ts +143 -0
- package/scripts/local-package-e2e.ts +51 -0
- package/scripts/sync-roles.ts +213 -0
- package/scripts/sync-skills.ts +356 -0
- package/scripts/validate-runtime.ts +11 -0
- package/skills/academic-paper-review/SKILL.md +81 -0
- package/skills/agents-md-initialization/SKILL.md +121 -0
- package/skills/agents-md-initialization/references/agents-template.md +83 -0
- package/skills/agents-md-initialization/references/agents_md.py +215 -0
- package/skills/ai-regression-scout/SKILL.md +24 -0
- package/skills/aili-delivery-flow/SKILL.md +125 -0
- package/skills/aili-delivery-flow/references/artifact-contracts.md +138 -0
- package/skills/aili-delivery-flow/references/backend-routing.md +40 -0
- package/skills/aili-delivery-flow/references/build-execution-loop.md +113 -0
- package/skills/aili-delivery-flow/references/build-goal-mode.md +3 -0
- package/skills/aili-delivery-flow/references/direct-vs-delegated-work.md +38 -0
- package/skills/aili-delivery-flow/references/implementation-packages.md +54 -0
- package/skills/aili-delivery-flow/references/lifecycle.md +127 -0
- package/skills/aili-delivery-flow/references/protocols/acceptance-test-plan.md +18 -0
- package/skills/aili-delivery-flow/references/protocols/alignment-questionnaire.md +10 -0
- package/skills/aili-delivery-flow/references/protocols/closeout-report.md +101 -0
- package/skills/aili-delivery-flow/references/protocols/compact-evidence-pack.md +46 -0
- package/skills/aili-delivery-flow/references/protocols/idea-brief.md +10 -0
- package/skills/aili-delivery-flow/references/protocols/implementation-package.md +53 -0
- package/skills/aili-delivery-flow/references/protocols/research-evidence-pack.md +19 -0
- package/skills/aili-delivery-flow/references/protocols/review-report.md +7 -0
- package/skills/aili-delivery-flow/references/protocols/spec-draft.md +12 -0
- package/skills/aili-delivery-flow/references/protocols/subagent-result.md +60 -0
- package/skills/aili-delivery-flow/references/protocols/subagent-task-packet.md +29 -0
- package/skills/aili-delivery-flow/references/protocols/worktree-context.md +109 -0
- package/skills/aili-delivery-flow/references/questionnaire-policy.md +62 -0
- package/skills/aili-delivery-flow/references/review-repair-loop.md +16 -0
- package/skills/aili-delivery-flow/references/test-document-policy.md +35 -0
- package/skills/android-native-dev/SKILL.md +722 -0
- package/skills/android-native-dev/references/accessibility.md +209 -0
- package/skills/android-native-dev/references/adaptive-screens.md +231 -0
- package/skills/android-native-dev/references/design-style-guide.md +365 -0
- package/skills/android-native-dev/references/functional-requirements.md +229 -0
- package/skills/android-native-dev/references/motion-system.md +203 -0
- package/skills/android-native-dev/references/performance-stability.md +223 -0
- package/skills/android-native-dev/references/privacy-security.md +244 -0
- package/skills/android-native-dev/references/testing.md +554 -0
- package/skills/android-native-dev/references/visual-design.md +246 -0
- package/skills/api-and-interface-design/SKILL.md +318 -0
- package/skills/browser-qa/SKILL.md +32 -0
- package/skills/browser-testing-with-devtools/SKILL.md +323 -0
- package/skills/build-failure-repair/SKILL.md +49 -0
- package/skills/chart-visualization/SKILL.md +73 -0
- package/skills/ci-cd-and-automation/SKILL.md +353 -0
- package/skills/code-review-and-quality/SKILL.md +375 -0
- package/skills/code-review-quality-gates/SKILL.md +132 -0
- package/skills/code-simplification/SKILL.md +371 -0
- package/skills/comment-accuracy-review/SKILL.md +37 -0
- package/skills/consulting-analysis/SKILL.md +69 -0
- package/skills/context-engineering/SKILL.md +375 -0
- package/skills/coverage-review/SKILL.md +24 -0
- package/skills/data-analysis/SKILL.md +74 -0
- package/skills/deprecation-and-migration/SKILL.md +222 -0
- package/skills/documentation-and-adrs/SKILL.md +330 -0
- package/skills/e2e-artifact-handling/SKILL.md +30 -0
- package/skills/evidence-scoped-retrospective/SKILL.md +156 -0
- package/skills/explain-by-allegory/SKILL.md +99 -0
- package/skills/flutter-dev/SKILL.md +162 -0
- package/skills/flutter-dev/references/animations.md +497 -0
- package/skills/flutter-dev/references/bloc-state.md +281 -0
- package/skills/flutter-dev/references/forms.md +656 -0
- package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
- package/skills/flutter-dev/references/localization.md +510 -0
- package/skills/flutter-dev/references/networking.md +566 -0
- package/skills/flutter-dev/references/performance.md +305 -0
- package/skills/flutter-dev/references/platform-specific.md +417 -0
- package/skills/flutter-dev/references/project-structure.md +273 -0
- package/skills/flutter-dev/references/riverpod-state.md +232 -0
- package/skills/flutter-dev/references/testing.md +364 -0
- package/skills/flutter-dev/references/widget-patterns.md +233 -0
- package/skills/frontend-dev/SKILL.md +468 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
- package/skills/frontend-dev/references/env-setup.md +33 -0
- package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
- package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
- package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
- package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
- package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
- package/skills/frontend-dev/references/minimax-voice-catalog.md +685 -0
- package/skills/frontend-dev/references/motion-recipes.md +407 -0
- package/skills/frontend-dev/references/troubleshooting.md +85 -0
- package/skills/frontend-dev/scripts/minimax_image.py +137 -0
- package/skills/frontend-dev/scripts/minimax_music.py +157 -0
- package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
- package/skills/frontend-dev/scripts/minimax_video.py +187 -0
- package/skills/frontend-dev/templates/generator_template.js +223 -0
- package/skills/frontend-dev/templates/viewer.html +599 -0
- package/skills/frontend-ui-engineering/SKILL.md +367 -0
- package/skills/fullstack-dev/SKILL.md +819 -0
- package/skills/fullstack-dev/references/api-design.md +444 -0
- package/skills/fullstack-dev/references/auth-flow.md +165 -0
- package/skills/fullstack-dev/references/db-schema.md +706 -0
- package/skills/fullstack-dev/references/django-best-practices.md +466 -0
- package/skills/fullstack-dev/references/environment-management.md +78 -0
- package/skills/fullstack-dev/references/release-checklist.md +278 -0
- package/skills/fullstack-dev/references/technology-selection.md +254 -0
- package/skills/fullstack-dev/references/testing-strategy.md +404 -0
- package/skills/git-workflow-and-versioning/SKILL.md +446 -0
- package/skills/github-evidence-triage/SKILL.md +115 -0
- package/skills/harness-evolution/SKILL.md +59 -0
- package/skills/harness-evolution/references/activation-matrix.md +13 -0
- package/skills/harness-evolution/references/approval-policy.md +20 -0
- package/skills/harness-evolution/references/change-report-template.md +33 -0
- package/skills/harness-evolution/references/component-taxonomy.md +19 -0
- package/skills/harness-evolution/references/verdict-policy.md +13 -0
- package/skills/harness-issue-triage/SKILL.md +72 -0
- package/skills/harness-issue-triage/references/component-diagnosis.md +25 -0
- package/skills/harness-issue-triage/references/triage-report-template.md +34 -0
- package/skills/harness-optimization-audit/SKILL.md +125 -0
- package/skills/idea-refine/SKILL.md +191 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/SKILL.upstream.md +178 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/examples.md +238 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/frameworks.md +99 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/refinement-criteria.md +113 -0
- package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/scripts/idea-refine.upstream.sh +15 -0
- package/skills/incremental-implementation/SKILL.md +252 -0
- package/skills/ios-application-dev/SKILL.md +212 -0
- package/skills/ios-application-dev/references/accessibility.md +259 -0
- package/skills/ios-application-dev/references/graphics-animation.md +350 -0
- package/skills/ios-application-dev/references/layout-system.md +199 -0
- package/skills/ios-application-dev/references/metal-shader.md +178 -0
- package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
- package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
- package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
- package/skills/ios-application-dev/references/system-integration.md +401 -0
- package/skills/ios-application-dev/references/uikit-components.md +297 -0
- package/skills/local-review-gate/SKILL.md +207 -0
- package/skills/local-review-gate/references/addyosmani-code-review-rubric.md +33 -0
- package/skills/local-review-gate/references/codex-github-compatibility.md +26 -0
- package/skills/local-review-gate/references/ecc-code-review-adaptation.md +40 -0
- package/skills/local-review-gate/references/graphify-local-review.md +33 -0
- package/skills/local-review-gate/references/orchestration-adaptation.md +51 -0
- package/skills/local-review-gate/references/review-repair-lane-adaptation.md +46 -0
- package/skills/local-review-gate/references/upstream-provenance.md +61 -0
- package/skills/mature-project-pattern-research/SKILL.md +155 -0
- package/skills/mature-project-pattern-research/references/research-rubric.md +45 -0
- package/skills/minimax-docx/LICENSE +21 -0
- package/skills/minimax-docx/SKILL.md +273 -0
- package/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
- package/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
- package/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
- package/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
- package/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
- package/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
- package/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
- package/skills/minimax-docx/references/cjk_typography.md +357 -0
- package/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
- package/skills/minimax-docx/references/comments_guide.md +191 -0
- package/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
- package/skills/minimax-docx/references/design_principles.md +819 -0
- package/skills/minimax-docx/references/openxml_element_order.md +308 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
- package/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
- package/skills/minimax-docx/references/openxml_namespaces.md +82 -0
- package/skills/minimax-docx/references/openxml_units.md +72 -0
- package/skills/minimax-docx/references/scenario_a_create.md +284 -0
- package/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
- package/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
- package/skills/minimax-docx/references/track_changes_guide.md +200 -0
- package/skills/minimax-docx/references/troubleshooting.md +506 -0
- package/skills/minimax-docx/references/typography_guide.md +294 -0
- package/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
- package/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
- package/skills/minimax-docx/scripts/docx_preview.sh +37 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
- package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
- package/skills/minimax-docx/scripts/env_check.sh +196 -0
- package/skills/minimax-docx/scripts/setup.ps1 +274 -0
- package/skills/minimax-docx/scripts/setup.sh +504 -0
- package/skills/minimax-pdf/README.md +222 -0
- package/skills/minimax-pdf/SKILL.md +218 -0
- package/skills/minimax-pdf/design/design.md +381 -0
- package/skills/minimax-pdf/scripts/cover.py +1579 -0
- package/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
- package/skills/minimax-pdf/scripts/fill_write.py +242 -0
- package/skills/minimax-pdf/scripts/make.sh +491 -0
- package/skills/minimax-pdf/scripts/merge.py +112 -0
- package/skills/minimax-pdf/scripts/palette.py +521 -0
- package/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
- package/skills/minimax-pdf/scripts/render_body.py +1052 -0
- package/skills/minimax-pdf/scripts/render_cover.js +111 -0
- package/skills/minimax-xlsx/SKILL.md +156 -0
- package/skills/minimax-xlsx/references/create.md +691 -0
- package/skills/minimax-xlsx/references/edit.md +684 -0
- package/skills/minimax-xlsx/references/fix.md +37 -0
- package/skills/minimax-xlsx/references/format.md +768 -0
- package/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
- package/skills/minimax-xlsx/references/read-analyze.md +97 -0
- package/skills/minimax-xlsx/references/validate.md +772 -0
- package/skills/minimax-xlsx/scripts/formula_check.py +422 -0
- package/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
- package/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
- package/skills/minimax-xlsx/scripts/style_audit.py +575 -0
- package/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
- package/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
- package/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
- package/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
- package/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
- package/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
- package/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
- package/skills/newsletter-generation/SKILL.md +71 -0
- package/skills/oss-release-readiness/SKILL.md +47 -0
- package/skills/parallel-subagent-dispatch/SKILL.md +58 -0
- package/skills/performance-optimization/SKILL.md +364 -0
- package/skills/planning-and-task-breakdown/SKILL.md +290 -0
- package/skills/pptx-generator/SKILL.md +275 -0
- package/skills/pptx-generator/references/design-system.md +392 -0
- package/skills/pptx-generator/references/editing.md +162 -0
- package/skills/pptx-generator/references/pitfalls.md +112 -0
- package/skills/pptx-generator/references/pptxgenjs.md +420 -0
- package/skills/pptx-generator/references/slide-types.md +413 -0
- package/skills/pr-test-analysis/SKILL.md +24 -0
- package/skills/react-native-dev/SKILL.md +180 -0
- package/skills/react-native-dev/references/animations.md +254 -0
- package/skills/react-native-dev/references/components.md +124 -0
- package/skills/react-native-dev/references/engineering.md +527 -0
- package/skills/react-native-dev/references/forms.md +300 -0
- package/skills/react-native-dev/references/native-capabilities.md +163 -0
- package/skills/react-native-dev/references/navigation.md +271 -0
- package/skills/react-native-dev/references/networking.md +346 -0
- package/skills/react-native-dev/references/performance.md +215 -0
- package/skills/react-native-dev/references/state-management.md +230 -0
- package/skills/react-native-dev/references/styling.md +117 -0
- package/skills/react-native-dev/references/testing.md +341 -0
- package/skills/requirements-grilling/SKILL.md +447 -0
- package/skills/requirements-grilling/references/ADR-FORMAT.md +46 -0
- package/skills/requirements-grilling/references/CONTEXT-FORMAT.md +41 -0
- package/skills/requirements-grilling/references/INTERVIEW-PACKET-FORMAT.md +62 -0
- package/skills/requirements-grilling/references/MIT-LICENSE-MATT-POCOCK.md +25 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/interview-me/SKILL.upstream.md +225 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/LICENSE +21 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/NOTICE.md +12 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/batch-grill-me/SKILL.upstream.md +15 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grill-me/SKILL.upstream.md +7 -0
- package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grilling/SKILL.upstream.md +12 -0
- package/skills/review-pipeline/SKILL.md +38 -0
- package/skills/rose-memory/SKILL.md +210 -0
- package/skills/rose-memory/references/README.md +48 -0
- package/skills/rose-memory/references/memory_cli.py +2384 -0
- package/skills/rose-memory/references/schema.sql +315 -0
- package/skills/security-and-hardening/SKILL.md +369 -0
- package/skills/session-handoff/SKILL.md +88 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
- package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/handoff/SKILL.upstream.md +16 -0
- package/skills/session-handoff/scripts/session_handoff.py +764 -0
- package/skills/shader-dev/SKILL.md +316 -0
- package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
- package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
- package/skills/shader-dev/reference/anti-aliasing.md +71 -0
- package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
- package/skills/shader-dev/reference/camera-effects.md +80 -0
- package/skills/shader-dev/reference/cellular-automata.md +635 -0
- package/skills/shader-dev/reference/color-palette.md +481 -0
- package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
- package/skills/shader-dev/reference/domain-repetition.md +436 -0
- package/skills/shader-dev/reference/domain-warping.md +419 -0
- package/skills/shader-dev/reference/fluid-simulation.md +425 -0
- package/skills/shader-dev/reference/fractal-rendering.md +525 -0
- package/skills/shader-dev/reference/lighting-model.md +639 -0
- package/skills/shader-dev/reference/matrix-transform.md +535 -0
- package/skills/shader-dev/reference/multipass-buffer.md +571 -0
- package/skills/shader-dev/reference/normal-estimation.md +418 -0
- package/skills/shader-dev/reference/particle-system.md +589 -0
- package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
- package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
- package/skills/shader-dev/reference/post-processing.md +375 -0
- package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
- package/skills/shader-dev/reference/procedural-noise.md +551 -0
- package/skills/shader-dev/reference/ray-marching.md +396 -0
- package/skills/shader-dev/reference/sdf-2d.md +724 -0
- package/skills/shader-dev/reference/sdf-3d.md +805 -0
- package/skills/shader-dev/reference/sdf-tricks.md +63 -0
- package/skills/shader-dev/reference/shadow-techniques.md +476 -0
- package/skills/shader-dev/reference/simulation-physics.md +644 -0
- package/skills/shader-dev/reference/sound-synthesis.md +578 -0
- package/skills/shader-dev/reference/terrain-rendering.md +839 -0
- package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
- package/skills/shader-dev/reference/texture-sampling.md +553 -0
- package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
- package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
- package/skills/shader-dev/reference/voxel-rendering.md +701 -0
- package/skills/shader-dev/reference/water-ocean.md +445 -0
- package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
- package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
- package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
- package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
- package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
- package/skills/shader-dev/techniques/camera-effects.md +115 -0
- package/skills/shader-dev/techniques/cellular-automata.md +531 -0
- package/skills/shader-dev/techniques/color-palette.md +380 -0
- package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
- package/skills/shader-dev/techniques/domain-repetition.md +333 -0
- package/skills/shader-dev/techniques/domain-warping.md +414 -0
- package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
- package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
- package/skills/shader-dev/techniques/lighting-model.md +527 -0
- package/skills/shader-dev/techniques/matrix-transform.md +455 -0
- package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
- package/skills/shader-dev/techniques/normal-estimation.md +318 -0
- package/skills/shader-dev/techniques/particle-system.md +1203 -0
- package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
- package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
- package/skills/shader-dev/techniques/post-processing.md +788 -0
- package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
- package/skills/shader-dev/techniques/procedural-noise.md +554 -0
- package/skills/shader-dev/techniques/ray-marching.md +467 -0
- package/skills/shader-dev/techniques/sdf-2d.md +631 -0
- package/skills/shader-dev/techniques/sdf-3d.md +589 -0
- package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
- package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
- package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
- package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
- package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
- package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
- package/skills/shader-dev/techniques/texture-sampling.md +382 -0
- package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
- package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
- package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
- package/skills/shader-dev/techniques/water-ocean.md +490 -0
- package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
- package/skills/shipping-and-launch/SKILL.md +334 -0
- package/skills/silent-failure-hunting/SKILL.md +24 -0
- package/skills/source-driven-development/SKILL.md +223 -0
- package/skills/spec-driven-development/SKILL.md +235 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
- package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/spec-driven-development/SKILL.upstream.md +206 -0
- package/skills/strategy-stress-test/SKILL.md +185 -0
- package/skills/systematic-literature-review/SKILL.md +77 -0
- package/skills/test-document-generator/SKILL.md +152 -0
- package/skills/test-document-generator/references/test-document-template.md +45 -0
- package/skills/test-driven-development/SKILL.md +399 -0
- package/skills/write-skills/GLOSSARY.md +113 -0
- package/skills/write-skills/SKILL.md +133 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/GLOSSARY.md +201 -0
- package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/SKILL.upstream.md +83 -0
- package/src/runtime/child-guard.ts +70 -0
- package/src/runtime/conflicts.ts +25 -0
- package/src/runtime/contracts.ts +9 -0
- package/src/runtime/doctor.ts +134 -0
- package/src/runtime/global-resources.ts +152 -0
- package/src/runtime/index.ts +23 -0
- package/src/runtime/lifecycle.ts +19 -0
- package/src/runtime/native-integrations.ts +44 -0
- package/src/runtime/path-boundaries.ts +69 -0
- package/src/runtime/registry.ts +213 -0
- package/src/runtime/roles.ts +64 -0
- package/src/runtime/rose-context.ts +24 -0
- package/src/runtime/subagents.ts +426 -0
- package/templates/APPEND_SYSTEM.md +12 -0
- package/upstream/aili-workflows.lock.json +3226 -0
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
# Procedural Noise Skill
|
|
2
|
+
|
|
3
|
+
## Use Cases
|
|
4
|
+
|
|
5
|
+
Procedural noise is the most fundamental technique in real-time GPU graphics. It applies to natural phenomena (fire, clouds, water, lava), terrain generation, texture synthesis, volume rendering, motion effects, and more.
|
|
6
|
+
|
|
7
|
+
Core idea: use mathematical functions to generate pseudo-random, spatially continuous signals on the GPU in real time, then produce multi-scale detail through FBM and domain warping.
|
|
8
|
+
|
|
9
|
+
## Core Principles
|
|
10
|
+
|
|
11
|
+
### Noise Functions
|
|
12
|
+
|
|
13
|
+
Generate random values at integer lattice points, then smoothly interpolate between them.
|
|
14
|
+
|
|
15
|
+
- **Value Noise**: random scalars at lattice points + bilinear Hermite interpolation. `N(p) = mix(mix(h00,h10,u), mix(h01,h11,u), v)`
|
|
16
|
+
- **Simplex Noise**: triangular lattice gradient dot products + radial falloff kernel. Skew `K1=(sqrt(3)-1)/2`, unskew `K2=(3-sqrt(3))/6`. Fewer lattice lookups, no axis-aligned artifacts.
|
|
17
|
+
|
|
18
|
+
### Hash Functions
|
|
19
|
+
|
|
20
|
+
Map integer coordinates to pseudo-random values:
|
|
21
|
+
|
|
22
|
+
- **sin-based** (short but precision-sensitive): `fract(sin(dot(p, vec2(127.1,311.7))) * 43758.5453)`
|
|
23
|
+
- **sin-free** (cross-platform stable): `fract(p * 0.1031)` + dot mixing + fract
|
|
24
|
+
|
|
25
|
+
### FBM (Fractal Brownian Motion)
|
|
26
|
+
|
|
27
|
+
Multi-octave noise summation: `FBM(p) = sum of amplitude_i * noise(frequency_i * p)`
|
|
28
|
+
|
|
29
|
+
- Lacunarity ~2.0, Gain ~0.5, inter-octave rotation to eliminate artifacts
|
|
30
|
+
|
|
31
|
+
### Domain Warping
|
|
32
|
+
|
|
33
|
+
Feed noise output back as coordinate offset: `fbm(p + fbm(p))` or cascaded `fbm(p + fbm(p + fbm(p)))`
|
|
34
|
+
|
|
35
|
+
### FBM Variant Quick Reference
|
|
36
|
+
|
|
37
|
+
| Variant | Formula | Effect |
|
|
38
|
+
|---------|---------|--------|
|
|
39
|
+
| Standard | `sum a*noise(p)` | Soft clouds |
|
|
40
|
+
| Ridged | `sum a*abs(noise(p))` | Sharp ridges/lightning |
|
|
41
|
+
| Sinusoidal ridged | `sum a*sin(noise(p)*k)` | Periodic ridges/lava |
|
|
42
|
+
| Erosion | `sum a*noise(p)/(1+dot(d,d))` | Realistic terrain |
|
|
43
|
+
| Ocean waves | `sum a*sea_octave(p)` | Peaked wave crests |
|
|
44
|
+
|
|
45
|
+
## Implementation Code
|
|
46
|
+
|
|
47
|
+
### Hash Functions
|
|
48
|
+
|
|
49
|
+
```glsl
|
|
50
|
+
// Sin-free hash (Dave Hoskins) — cross-platform stable
|
|
51
|
+
float hash12(vec2 p) {
|
|
52
|
+
vec3 p3 = fract(vec3(p.xyx) * .1031);
|
|
53
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
54
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
vec2 hash22(vec2 p) {
|
|
58
|
+
vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973));
|
|
59
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
60
|
+
return fract((p3.xx + p3.yz) * p3.zy);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Sin hash — shorter code, precision-sensitive on some GPUs
|
|
64
|
+
float hash(vec2 p) {
|
|
65
|
+
float h = dot(p, vec2(127.1, 311.7));
|
|
66
|
+
return fract(sin(h) * 43758.5453123);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
vec2 hash2(vec2 p) {
|
|
70
|
+
p = vec2(dot(p, vec2(127.1, 311.7)),
|
|
71
|
+
dot(p, vec2(269.5, 183.3)));
|
|
72
|
+
return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Value Noise
|
|
77
|
+
|
|
78
|
+
```glsl
|
|
79
|
+
// Hermite smooth bilinear interpolation
|
|
80
|
+
float noise(in vec2 x) {
|
|
81
|
+
vec2 p = floor(x);
|
|
82
|
+
vec2 f = fract(x);
|
|
83
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
84
|
+
float a = hash(p + vec2(0.0, 0.0));
|
|
85
|
+
float b = hash(p + vec2(1.0, 0.0));
|
|
86
|
+
float c = hash(p + vec2(0.0, 1.0));
|
|
87
|
+
float d = hash(p + vec2(1.0, 1.0));
|
|
88
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Simplex Noise
|
|
93
|
+
|
|
94
|
+
```glsl
|
|
95
|
+
// 2D Simplex (skewed triangular grid + h^4 falloff kernel)
|
|
96
|
+
float noise(in vec2 p) {
|
|
97
|
+
const float K1 = 0.366025404; // (sqrt(3)-1)/2
|
|
98
|
+
const float K2 = 0.211324865; // (3-sqrt(3))/6
|
|
99
|
+
vec2 i = floor(p + (p.x + p.y) * K1);
|
|
100
|
+
vec2 a = p - i + (i.x + i.y) * K2;
|
|
101
|
+
vec2 o = (a.x > a.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
102
|
+
vec2 b = a - o + K2;
|
|
103
|
+
vec2 c = a - 1.0 + 2.0 * K2;
|
|
104
|
+
vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0);
|
|
105
|
+
vec3 n = h * h * h * h * vec3(
|
|
106
|
+
dot(a, hash2(i + 0.0)),
|
|
107
|
+
dot(b, hash2(i + o)),
|
|
108
|
+
dot(c, hash2(i + 1.0))
|
|
109
|
+
);
|
|
110
|
+
return dot(n, vec3(70.0));
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Standard FBM
|
|
115
|
+
|
|
116
|
+
```glsl
|
|
117
|
+
#define OCTAVES 4
|
|
118
|
+
#define GAIN 0.5
|
|
119
|
+
mat2 m = mat2(1.6, 1.2, -1.2, 1.6); // rotation+scale, |m|=2.0, ~36.87 deg
|
|
120
|
+
|
|
121
|
+
float fbm(vec2 p) {
|
|
122
|
+
float f = 0.0, a = 0.5;
|
|
123
|
+
for (int i = 0; i < OCTAVES; i++) {
|
|
124
|
+
f += a * noise(p);
|
|
125
|
+
p = m * p;
|
|
126
|
+
a *= GAIN;
|
|
127
|
+
}
|
|
128
|
+
return f;
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Manually unrolled version (slightly varying lacunarity to break self-similarity):
|
|
133
|
+
|
|
134
|
+
```glsl
|
|
135
|
+
const mat2 mtx = mat2(0.80, 0.60, -0.60, 0.80);
|
|
136
|
+
float fbm4(vec2 p) {
|
|
137
|
+
float f = 0.0;
|
|
138
|
+
f += 0.5000 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.02;
|
|
139
|
+
f += 0.2500 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.03;
|
|
140
|
+
f += 0.1250 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.01;
|
|
141
|
+
f += 0.0625 * (-1.0 + 2.0 * noise(p));
|
|
142
|
+
return f / 0.9375;
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Ridged FBM
|
|
147
|
+
|
|
148
|
+
```glsl
|
|
149
|
+
// abs() produces V-shaped ridges at zero crossings
|
|
150
|
+
float fbm_ridged(in vec2 p) {
|
|
151
|
+
float z = 2.0, rz = 0.0;
|
|
152
|
+
for (float i = 1.0; i < 6.0; i++) {
|
|
153
|
+
rz += abs((noise(p) - 0.5) * 2.0) / z;
|
|
154
|
+
z *= 2.0;
|
|
155
|
+
p *= 2.0;
|
|
156
|
+
}
|
|
157
|
+
return rz;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Sinusoidal ridged variant — lava texture
|
|
161
|
+
// rz += (sin(noise(p) * 7.0) * 0.5 + 0.5) / z;
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Domain Warping
|
|
165
|
+
|
|
166
|
+
```glsl
|
|
167
|
+
// Basic domain warping ("2D Clouds")
|
|
168
|
+
float q = fbm(uv * 0.5);
|
|
169
|
+
uv -= q - time;
|
|
170
|
+
float f = fbm(uv);
|
|
171
|
+
|
|
172
|
+
// Classic three-level cascade
|
|
173
|
+
vec2 fbm4_2(vec2 p) {
|
|
174
|
+
return vec2(fbm4(p + vec2(1.0)), fbm4(p + vec2(6.2)));
|
|
175
|
+
}
|
|
176
|
+
float func(vec2 q, out vec2 o, out vec2 n) {
|
|
177
|
+
o = 0.5 + 0.5 * fbm4_2(q);
|
|
178
|
+
n = fbm6_2(4.0 * o);
|
|
179
|
+
vec2 p = q + 2.0 * n + 1.0;
|
|
180
|
+
float f = 0.5 + 0.5 * fbm4(2.0 * p);
|
|
181
|
+
f = mix(f, f * f * f * 3.5, f * abs(n.x));
|
|
182
|
+
return f;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Dual-axis domain warping
|
|
186
|
+
float dualfbm(in vec2 p) {
|
|
187
|
+
vec2 p2 = p * 0.7;
|
|
188
|
+
vec2 basis = vec2(fbm(p2 - time * 1.6), fbm(p2 + time * 1.7));
|
|
189
|
+
basis = (basis - 0.5) * 0.2;
|
|
190
|
+
p += basis;
|
|
191
|
+
return fbm(p * makem2(time * 0.2));
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Fluid Noise
|
|
196
|
+
|
|
197
|
+
```glsl
|
|
198
|
+
// Per-octave gradient displacement simulating fluid transport
|
|
199
|
+
#define FLOW_SPEED 0.6
|
|
200
|
+
#define BASE_SPEED 1.9
|
|
201
|
+
#define ADVECTION 0.77
|
|
202
|
+
#define GRAD_SCALE 0.5
|
|
203
|
+
|
|
204
|
+
vec2 gradn(vec2 p) {
|
|
205
|
+
float ep = 0.09;
|
|
206
|
+
float gradx = noise(vec2(p.x + ep, p.y)) - noise(vec2(p.x - ep, p.y));
|
|
207
|
+
float grady = noise(vec2(p.x, p.y + ep)) - noise(vec2(p.x, p.y - ep));
|
|
208
|
+
return vec2(gradx, grady);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
float flow(in vec2 p) {
|
|
212
|
+
float z = 2.0, rz = 0.0;
|
|
213
|
+
vec2 bp = p;
|
|
214
|
+
for (float i = 1.0; i < 7.0; i++) {
|
|
215
|
+
p += time * FLOW_SPEED;
|
|
216
|
+
bp += time * BASE_SPEED;
|
|
217
|
+
vec2 gr = gradn(i * p * 0.34 + time * 1.0);
|
|
218
|
+
gr *= makem2(time * 6.0 - (0.05 * p.x + 0.03 * p.y) * 40.0);
|
|
219
|
+
p += gr * GRAD_SCALE;
|
|
220
|
+
rz += (sin(noise(p) * 7.0) * 0.5 + 0.5) / z;
|
|
221
|
+
p = mix(bp, p, ADVECTION);
|
|
222
|
+
z *= 1.4;
|
|
223
|
+
p *= 2.0;
|
|
224
|
+
bp *= 1.9;
|
|
225
|
+
}
|
|
226
|
+
return rz;
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Derivative FBM
|
|
231
|
+
|
|
232
|
+
```glsl
|
|
233
|
+
// Value noise with analytic derivatives
|
|
234
|
+
vec3 noised(in vec2 x) {
|
|
235
|
+
vec2 p = floor(x);
|
|
236
|
+
vec2 f = fract(x);
|
|
237
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
238
|
+
vec2 du = 6.0 * f * (1.0 - f);
|
|
239
|
+
float a = hash(p + vec2(0, 0));
|
|
240
|
+
float b = hash(p + vec2(1, 0));
|
|
241
|
+
float c = hash(p + vec2(0, 1));
|
|
242
|
+
float d = hash(p + vec2(1, 1));
|
|
243
|
+
return vec3(
|
|
244
|
+
a + (b - a) * u.x + (c - a) * u.y + (a - b - c + d) * u.x * u.y,
|
|
245
|
+
du * (vec2(b - a, c - a) + (a - b - c + d) * u.yx)
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Erosion FBM: higher gradient = lower contribution
|
|
250
|
+
float terrainFBM(in vec2 x) {
|
|
251
|
+
const mat2 m2 = mat2(0.8, -0.6, 0.6, 0.8);
|
|
252
|
+
float a = 0.0, b = 1.0;
|
|
253
|
+
vec2 d = vec2(0.0);
|
|
254
|
+
for (int i = 0; i < 16; i++) {
|
|
255
|
+
vec3 n = noised(x);
|
|
256
|
+
d += n.yz;
|
|
257
|
+
a += b * n.x / (1.0 + dot(d, d)); // 1/(1+|grad|^2) erosion factor
|
|
258
|
+
b *= 0.5;
|
|
259
|
+
x = m2 * x * 2.0;
|
|
260
|
+
}
|
|
261
|
+
return a;
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Quintic Noise with Analytical Derivatives
|
|
266
|
+
|
|
267
|
+
C2-continuous noise using quintic interpolation — eliminates visible grid artifacts in derivatives:
|
|
268
|
+
|
|
269
|
+
```glsl
|
|
270
|
+
// Returns vec3(value, dFdx, dFdy) — derivatives are exact, not finite-differenced
|
|
271
|
+
vec3 noisedQ(vec2 p) {
|
|
272
|
+
vec2 i = floor(p);
|
|
273
|
+
vec2 f = fract(p);
|
|
274
|
+
// Quintic interpolation for C2 continuity
|
|
275
|
+
vec2 u = f * f * f * (f * (f * 6.0 - 15.0) + 10.0);
|
|
276
|
+
vec2 du = 30.0 * f * f * (f * (f - 2.0) + 1.0);
|
|
277
|
+
|
|
278
|
+
float a = hash12(i + vec2(0.0, 0.0));
|
|
279
|
+
float b = hash12(i + vec2(1.0, 0.0));
|
|
280
|
+
float c = hash12(i + vec2(0.0, 1.0));
|
|
281
|
+
float d = hash12(i + vec2(1.0, 1.0));
|
|
282
|
+
|
|
283
|
+
float k0 = a, k1 = b - a, k2 = c - a, k3 = a - b - c + d;
|
|
284
|
+
return vec3(
|
|
285
|
+
k0 + k1 * u.x + k2 * u.y + k3 * u.x * u.y, // value
|
|
286
|
+
du * vec2(k1 + k3 * u.y, k2 + k3 * u.x) // derivatives
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### FBM with Derivatives (Erosion Terrain)
|
|
292
|
+
|
|
293
|
+
Accumulates derivatives across octaves — derivative magnitude dampens amplitude, creating realistic erosion patterns:
|
|
294
|
+
|
|
295
|
+
```glsl
|
|
296
|
+
vec3 fbmDerivative(vec2 p, int octaves) {
|
|
297
|
+
float value = 0.0;
|
|
298
|
+
vec2 deriv = vec2(0.0);
|
|
299
|
+
float amplitude = 0.5;
|
|
300
|
+
float frequency = 1.0;
|
|
301
|
+
mat2 rot = mat2(0.8, 0.6, -0.6, 0.8); // inter-octave rotation
|
|
302
|
+
|
|
303
|
+
for (int i = 0; i < octaves; i++) {
|
|
304
|
+
vec3 n = noisedQ(p * frequency);
|
|
305
|
+
deriv += n.yz;
|
|
306
|
+
// Key: divide by (1 + dot(deriv, deriv)) for erosion effect
|
|
307
|
+
value += amplitude * n.x / (1.0 + dot(deriv, deriv));
|
|
308
|
+
frequency *= 2.0;
|
|
309
|
+
amplitude *= 0.5;
|
|
310
|
+
p = rot * p; // rotate to break axis-aligned artifacts
|
|
311
|
+
}
|
|
312
|
+
return vec3(value, deriv);
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
Key insights:
|
|
317
|
+
- **Quintic interpolation**: `6t^5 - 15t^4 + 10t^3` gives C2 continuous noise (vs Hermite's C1), eliminating visible grid artifacts in derivatives
|
|
318
|
+
- **Erosion FBM**: The `1/(1+dot(d,d))` term causes flat areas to accumulate more detail while steep slopes stay smooth — mimicking real erosion
|
|
319
|
+
- **Inter-octave rotation**: The 2x2 rotation matrix between octaves prevents axis-aligned patterns especially visible in ridged noise
|
|
320
|
+
|
|
321
|
+
### Voronoise (Voronoi-Noise Hybrid)
|
|
322
|
+
|
|
323
|
+
Unified interpolation between value noise and Voronoi patterns:
|
|
324
|
+
|
|
325
|
+
```glsl
|
|
326
|
+
// u=0: Value noise, u=1: Voronoi, v: smoothness (0=sharp cells, 1=smooth)
|
|
327
|
+
vec3 hash32(vec2 p) {
|
|
328
|
+
vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973));
|
|
329
|
+
p3 += dot(p3, p3.yxz + 33.33);
|
|
330
|
+
return fract((p3.xxy + p3.yzz) * p3.zyx);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
float voronoise(vec2 p, float u, float v) {
|
|
334
|
+
float k = 1.0 + 63.0 * pow(1.0 - v, 6.0);
|
|
335
|
+
vec2 i = floor(p);
|
|
336
|
+
vec2 f = fract(p);
|
|
337
|
+
vec2 a = vec2(0.0);
|
|
338
|
+
for (int y = -2; y <= 2; y++)
|
|
339
|
+
for (int x = -2; x <= 2; x++) {
|
|
340
|
+
vec2 g = vec2(float(x), float(y));
|
|
341
|
+
vec3 o = hash32(i + g) * vec3(u, u, 1.0);
|
|
342
|
+
vec2 d = g - f + o.xy;
|
|
343
|
+
float w = pow(1.0 - smoothstep(0.0, 1.414, length(d)), k);
|
|
344
|
+
a += vec2(o.z * w, w);
|
|
345
|
+
}
|
|
346
|
+
return a.x / a.y;
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
Extremely versatile — smoothly interpolates between cellular Voronoi and continuous noise.
|
|
351
|
+
|
|
352
|
+
### Preventing Aliasing in Procedural Textures
|
|
353
|
+
|
|
354
|
+
For distant surfaces, high-frequency noise octaves create moiré artifacts. Solutions:
|
|
355
|
+
|
|
356
|
+
1. **LOD-based octave count**: `int octaves = min(MAX_OCTAVES, int(log2(pixelSize)))` — skip octaves finer than pixel size
|
|
357
|
+
2. **Analytical filtering**: For simple patterns (checkers, stripes), use smoothstep with pixel width: `smoothstep(-fw, fw, pattern)` where `fw = fwidth(uv)`
|
|
358
|
+
3. **Derivative-based mip**: Use `textureGrad()` with manually computed ray differentials for texture lookups in ray-marched scenes (see texture-mapping-advanced technique)
|
|
359
|
+
|
|
360
|
+
## Complete Code Template
|
|
361
|
+
|
|
362
|
+
Ready to run in ShaderToy. Switch between standard FBM / ridged FBM / domain warping modes via `#define`:
|
|
363
|
+
|
|
364
|
+
```glsl
|
|
365
|
+
// ============================================================
|
|
366
|
+
// Procedural Noise Skill — Complete Template
|
|
367
|
+
// ============================================================
|
|
368
|
+
|
|
369
|
+
// ========== Mode selection (uncomment to switch) ==========
|
|
370
|
+
#define MODE_STANDARD_FBM // Standard FBM clouds
|
|
371
|
+
//#define MODE_RIDGED_FBM // Ridged FBM lightning texture
|
|
372
|
+
//#define MODE_DOMAIN_WARP // Domain warped organic pattern
|
|
373
|
+
|
|
374
|
+
// ========== Tunable parameters ==========
|
|
375
|
+
#define OCTAVES 6
|
|
376
|
+
#define GAIN 0.5
|
|
377
|
+
#define LACUNARITY 2.0
|
|
378
|
+
#define NOISE_SCALE 3.0
|
|
379
|
+
#define ANIM_SPEED 0.3
|
|
380
|
+
#define WARP_STRENGTH 0.4
|
|
381
|
+
|
|
382
|
+
// ========== Hash function ==========
|
|
383
|
+
float hash(vec2 p) {
|
|
384
|
+
vec3 p3 = fract(vec3(p.xyx) * 0.1031);
|
|
385
|
+
p3 += dot(p3, p3.yzx + 33.33);
|
|
386
|
+
return fract((p3.x + p3.y) * p3.z);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// ========== Value noise ==========
|
|
390
|
+
float noise(in vec2 x) {
|
|
391
|
+
vec2 p = floor(x);
|
|
392
|
+
vec2 f = fract(x);
|
|
393
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
394
|
+
float a = hash(p + vec2(0.0, 0.0));
|
|
395
|
+
float b = hash(p + vec2(1.0, 0.0));
|
|
396
|
+
float c = hash(p + vec2(0.0, 1.0));
|
|
397
|
+
float d = hash(p + vec2(1.0, 1.0));
|
|
398
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
// ========== Rotation+scale matrix ==========
|
|
402
|
+
const mat2 m = mat2(1.6, 1.2, -1.2, 1.6);
|
|
403
|
+
|
|
404
|
+
// ========== Standard FBM ==========
|
|
405
|
+
float fbm(vec2 p) {
|
|
406
|
+
float f = 0.0, a = 0.5;
|
|
407
|
+
for (int i = 0; i < OCTAVES; i++) {
|
|
408
|
+
f += a * (-1.0 + 2.0 * noise(p));
|
|
409
|
+
p = m * p;
|
|
410
|
+
a *= GAIN;
|
|
411
|
+
}
|
|
412
|
+
return f;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// ========== Ridged FBM ==========
|
|
416
|
+
float fbm_ridged(vec2 p) {
|
|
417
|
+
float f = 0.0, a = 0.5;
|
|
418
|
+
for (int i = 0; i < OCTAVES; i++) {
|
|
419
|
+
f += a * abs(-1.0 + 2.0 * noise(p));
|
|
420
|
+
p = m * p;
|
|
421
|
+
a *= GAIN;
|
|
422
|
+
}
|
|
423
|
+
return f;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// ========== Domain warping vec2 FBM ==========
|
|
427
|
+
vec2 fbm2(vec2 p) {
|
|
428
|
+
return vec2(fbm(p + vec2(1.7, 9.2)), fbm(p + vec2(8.3, 2.8)));
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
|
432
|
+
vec2 uv = (2.0 * fragCoord - iResolution.xy) / iResolution.y;
|
|
433
|
+
uv *= NOISE_SCALE;
|
|
434
|
+
float time = iTime * ANIM_SPEED;
|
|
435
|
+
float f = 0.0;
|
|
436
|
+
vec3 col = vec3(0.0);
|
|
437
|
+
|
|
438
|
+
#ifdef MODE_STANDARD_FBM
|
|
439
|
+
f = 0.5 + 0.5 * fbm(uv + vec2(0.0, -time));
|
|
440
|
+
vec3 sky = mix(vec3(0.4, 0.7, 1.0), vec3(0.2, 0.4, 0.6), fragCoord.y / iResolution.y);
|
|
441
|
+
vec3 cloud = vec3(1.1, 1.1, 0.9) * f;
|
|
442
|
+
col = mix(sky, cloud, smoothstep(0.4, 0.7, f));
|
|
443
|
+
#endif
|
|
444
|
+
|
|
445
|
+
#ifdef MODE_RIDGED_FBM
|
|
446
|
+
f = fbm_ridged(uv + vec2(time * 0.5, time * 0.3));
|
|
447
|
+
col = vec3(0.2, 0.1, 0.4) / max(f, 0.05);
|
|
448
|
+
col = pow(col, vec3(0.99));
|
|
449
|
+
#endif
|
|
450
|
+
|
|
451
|
+
#ifdef MODE_DOMAIN_WARP
|
|
452
|
+
vec2 q = fbm2(uv + time * 0.1);
|
|
453
|
+
vec2 r = fbm2(uv + WARP_STRENGTH * q + vec2(1.7, 9.2));
|
|
454
|
+
f = 0.5 + 0.5 * fbm(uv + WARP_STRENGTH * r);
|
|
455
|
+
f = mix(f, f * f * f * 3.5, f * length(r));
|
|
456
|
+
col = vec3(0.2, 0.1, 0.4);
|
|
457
|
+
col = mix(col, vec3(0.3, 0.05, 0.05), f);
|
|
458
|
+
col = mix(col, vec3(0.9, 0.9, 0.9), dot(r, r));
|
|
459
|
+
col = mix(col, vec3(0.5, 0.2, 0.2), 0.5 * q.y * q.y);
|
|
460
|
+
col *= f * 2.0;
|
|
461
|
+
vec2 eps = vec2(1.0 / iResolution.x, 0.0);
|
|
462
|
+
float fx = 0.5 + 0.5 * fbm(uv + eps.xy + WARP_STRENGTH * fbm2(uv + eps.xy + time * 0.1));
|
|
463
|
+
float fy = 0.5 + 0.5 * fbm(uv + eps.yx + WARP_STRENGTH * fbm2(uv + eps.yx + time * 0.1));
|
|
464
|
+
vec3 nor = normalize(vec3(fx - f, eps.x, fy - f));
|
|
465
|
+
vec3 lig = normalize(vec3(0.9, -0.2, -0.4));
|
|
466
|
+
float dif = clamp(0.3 + 0.7 * dot(nor, lig), 0.0, 1.0);
|
|
467
|
+
col *= vec3(0.85, 0.90, 0.95) * (nor.y * 0.5 + 0.5) + vec3(0.15, 0.10, 0.05) * dif;
|
|
468
|
+
#endif
|
|
469
|
+
|
|
470
|
+
vec2 p = fragCoord / iResolution.xy;
|
|
471
|
+
col *= 0.5 + 0.5 * sqrt(16.0 * p.x * p.y * (1.0 - p.x) * (1.0 - p.y));
|
|
472
|
+
fragColor = vec4(col, 1.0);
|
|
473
|
+
}
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
## Common Variants
|
|
477
|
+
|
|
478
|
+
### Ridged FBM
|
|
479
|
+
|
|
480
|
+
```glsl
|
|
481
|
+
f += a * abs(noise(p)); // V-shaped ridges
|
|
482
|
+
f += a * (sin(noise(p)*7.0)*0.5+0.5); // Sinusoidal ridges (lava)
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Domain Warped FBM
|
|
486
|
+
|
|
487
|
+
```glsl
|
|
488
|
+
vec2 o = 0.5 + 0.5 * vec2(fbm(q + vec2(1.0)), fbm(q + vec2(6.2)));
|
|
489
|
+
vec2 n = vec2(fbm(4.0 * o + vec2(9.2)), fbm(4.0 * o + vec2(5.7)));
|
|
490
|
+
float f = 0.5 + 0.5 * fbm(q + 2.0 * n + 1.0);
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
### Derivative Erosion FBM
|
|
494
|
+
|
|
495
|
+
```glsl
|
|
496
|
+
vec2 d = vec2(0.0);
|
|
497
|
+
for (int i = 0; i < N; i++) {
|
|
498
|
+
vec3 n = noised(p);
|
|
499
|
+
d += n.yz;
|
|
500
|
+
a += b * n.x / (1.0 + dot(d, d));
|
|
501
|
+
b *= 0.5; p = m2 * p * 2.0;
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### Fluid Noise
|
|
506
|
+
|
|
507
|
+
```glsl
|
|
508
|
+
for (float i = 1.0; i < 7.0; i++) {
|
|
509
|
+
vec2 gr = gradn(i * p * 0.34 + time);
|
|
510
|
+
gr *= makem2(time * 6.0 - (0.05*p.x+0.03*p.y)*40.0);
|
|
511
|
+
p += gr * 0.5;
|
|
512
|
+
rz += (sin(noise(p)*7.0)*0.5+0.5) / z;
|
|
513
|
+
p = mix(bp, p, 0.77);
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Ocean Wave Octave Function
|
|
518
|
+
|
|
519
|
+
```glsl
|
|
520
|
+
float sea_octave(vec2 uv, float choppy) {
|
|
521
|
+
uv += noise(uv);
|
|
522
|
+
vec2 wv = 1.0 - abs(sin(uv));
|
|
523
|
+
vec2 swv = abs(cos(uv));
|
|
524
|
+
wv = mix(wv, swv, wv);
|
|
525
|
+
return pow(1.0 - pow(wv.x * wv.y, 0.65), choppy);
|
|
526
|
+
}
|
|
527
|
+
// Bidirectional propagation in FBM:
|
|
528
|
+
d = sea_octave((uv + SEA_TIME) * freq, choppy);
|
|
529
|
+
d += sea_octave((uv - SEA_TIME) * freq, choppy);
|
|
530
|
+
choppy = mix(choppy, 1.0, 0.2);
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
## Performance & Composition
|
|
534
|
+
|
|
535
|
+
**Performance optimization:**
|
|
536
|
+
- Reducing octave count is the most direct optimization; use fewer octaves for distant objects: `int oct = 5 - int(log2(1.0 + t * 0.5));`
|
|
537
|
+
- Multi-level LOD: `terrainL` (3 oct) / `terrainM` (9 oct) / `terrainH` (16 oct)
|
|
538
|
+
- Texture sampling instead of math hash: `texture(iChannel0, x * 0.01).x`
|
|
539
|
+
- Manually unroll small loops + slightly vary lacunarity
|
|
540
|
+
- Adaptive step size: `float dt = max(0.05, 0.02 * t);`
|
|
541
|
+
- Directional derivative instead of full gradient (1 sample vs 3)
|
|
542
|
+
- Early termination: `if (sum.a > 0.99) break;`
|
|
543
|
+
|
|
544
|
+
**Common combinations:**
|
|
545
|
+
- FBM + Raymarching: noise-driven height/density fields, ray marching for intersection (terrain/ocean)
|
|
546
|
+
- FBM + finite-difference normals + lighting: `nor = normalize(vec3(f(p+ex)-f(p), eps, f(p+ey)-f(p)))`
|
|
547
|
+
- FBM + color mapping: different power curves mapping to RGB, e.g. flame `vec3(1.5*c, 1.5*c^3, c^6)` or inverse `vec3(k)/rz`
|
|
548
|
+
- FBM + Fresnel water surface: `fresnel = pow(1.0 - dot(n, -eye), 3.0)`
|
|
549
|
+
- Multi-layer FBM compositing: shape layer (low freq) + ridged layer (mid freq) + color layer (high freq)
|
|
550
|
+
- FBM + volumetric lighting: density difference along light direction approximates illumination
|
|
551
|
+
|
|
552
|
+
## Further Reading
|
|
553
|
+
|
|
554
|
+
For complete step-by-step tutorials, mathematical derivations, and advanced usage, see [reference](../reference/procedural-noise.md)
|