@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.
Files changed (531) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -0
  3. package/THIRD_PARTY_NOTICES.md +64 -0
  4. package/extensions/index.ts +6 -0
  5. package/install.sh +5 -0
  6. package/manifests/adapter-evidence.json +45 -0
  7. package/manifests/capabilities.json +124 -0
  8. package/manifests/live-verification.json +26 -0
  9. package/manifests/provenance.json +71 -0
  10. package/manifests/roles.json +474 -0
  11. package/manifests/sbom.json +7797 -0
  12. package/manifests/skill-compatibility.json +8100 -0
  13. package/manifests/subagent-provenance.json +37 -0
  14. package/package.json +91 -0
  15. package/prompts/build.md +8 -0
  16. package/prompts/define.md +8 -0
  17. package/prompts/ideate.md +8 -0
  18. package/prompts/local-review.md +8 -0
  19. package/prompts/ship.md +8 -0
  20. package/roles/agent-evaluator.md +47 -0
  21. package/roles/ai-regression-scout.md +47 -0
  22. package/roles/browser-qa-runner.md +47 -0
  23. package/roles/code-reviewer.md +47 -0
  24. package/roles/code-scout.md +47 -0
  25. package/roles/convergence-reviewer.md +55 -0
  26. package/roles/doc-researcher.md +47 -0
  27. package/roles/e2e-artifact-runner.md +47 -0
  28. package/roles/implementer.md +47 -0
  29. package/roles/opensource-sanitizer.md +47 -0
  30. package/roles/plan-auditor.md +47 -0
  31. package/roles/pr-test-analyzer.md +47 -0
  32. package/roles/security-auditor.md +47 -0
  33. package/roles/silent-failure-reviewer.md +47 -0
  34. package/roles/spec-miner.md +47 -0
  35. package/roles/test-coverage-reviewer.md +47 -0
  36. package/roles/test-engineer.md +48 -0
  37. package/roles/web-performance-auditor.md +47 -0
  38. package/roles/web-researcher.md +47 -0
  39. package/scripts/apply-adapter-evidence.ts +73 -0
  40. package/scripts/bootstrap.sh +180 -0
  41. package/scripts/generate-provenance.ts +143 -0
  42. package/scripts/local-package-e2e.ts +51 -0
  43. package/scripts/sync-roles.ts +213 -0
  44. package/scripts/sync-skills.ts +356 -0
  45. package/scripts/validate-runtime.ts +11 -0
  46. package/skills/academic-paper-review/SKILL.md +81 -0
  47. package/skills/agents-md-initialization/SKILL.md +121 -0
  48. package/skills/agents-md-initialization/references/agents-template.md +83 -0
  49. package/skills/agents-md-initialization/references/agents_md.py +215 -0
  50. package/skills/ai-regression-scout/SKILL.md +24 -0
  51. package/skills/aili-delivery-flow/SKILL.md +125 -0
  52. package/skills/aili-delivery-flow/references/artifact-contracts.md +138 -0
  53. package/skills/aili-delivery-flow/references/backend-routing.md +40 -0
  54. package/skills/aili-delivery-flow/references/build-execution-loop.md +113 -0
  55. package/skills/aili-delivery-flow/references/build-goal-mode.md +3 -0
  56. package/skills/aili-delivery-flow/references/direct-vs-delegated-work.md +38 -0
  57. package/skills/aili-delivery-flow/references/implementation-packages.md +54 -0
  58. package/skills/aili-delivery-flow/references/lifecycle.md +127 -0
  59. package/skills/aili-delivery-flow/references/protocols/acceptance-test-plan.md +18 -0
  60. package/skills/aili-delivery-flow/references/protocols/alignment-questionnaire.md +10 -0
  61. package/skills/aili-delivery-flow/references/protocols/closeout-report.md +101 -0
  62. package/skills/aili-delivery-flow/references/protocols/compact-evidence-pack.md +46 -0
  63. package/skills/aili-delivery-flow/references/protocols/idea-brief.md +10 -0
  64. package/skills/aili-delivery-flow/references/protocols/implementation-package.md +53 -0
  65. package/skills/aili-delivery-flow/references/protocols/research-evidence-pack.md +19 -0
  66. package/skills/aili-delivery-flow/references/protocols/review-report.md +7 -0
  67. package/skills/aili-delivery-flow/references/protocols/spec-draft.md +12 -0
  68. package/skills/aili-delivery-flow/references/protocols/subagent-result.md +60 -0
  69. package/skills/aili-delivery-flow/references/protocols/subagent-task-packet.md +29 -0
  70. package/skills/aili-delivery-flow/references/protocols/worktree-context.md +109 -0
  71. package/skills/aili-delivery-flow/references/questionnaire-policy.md +62 -0
  72. package/skills/aili-delivery-flow/references/review-repair-loop.md +16 -0
  73. package/skills/aili-delivery-flow/references/test-document-policy.md +35 -0
  74. package/skills/android-native-dev/SKILL.md +722 -0
  75. package/skills/android-native-dev/references/accessibility.md +209 -0
  76. package/skills/android-native-dev/references/adaptive-screens.md +231 -0
  77. package/skills/android-native-dev/references/design-style-guide.md +365 -0
  78. package/skills/android-native-dev/references/functional-requirements.md +229 -0
  79. package/skills/android-native-dev/references/motion-system.md +203 -0
  80. package/skills/android-native-dev/references/performance-stability.md +223 -0
  81. package/skills/android-native-dev/references/privacy-security.md +244 -0
  82. package/skills/android-native-dev/references/testing.md +554 -0
  83. package/skills/android-native-dev/references/visual-design.md +246 -0
  84. package/skills/api-and-interface-design/SKILL.md +318 -0
  85. package/skills/browser-qa/SKILL.md +32 -0
  86. package/skills/browser-testing-with-devtools/SKILL.md +323 -0
  87. package/skills/build-failure-repair/SKILL.md +49 -0
  88. package/skills/chart-visualization/SKILL.md +73 -0
  89. package/skills/ci-cd-and-automation/SKILL.md +353 -0
  90. package/skills/code-review-and-quality/SKILL.md +375 -0
  91. package/skills/code-review-quality-gates/SKILL.md +132 -0
  92. package/skills/code-simplification/SKILL.md +371 -0
  93. package/skills/comment-accuracy-review/SKILL.md +37 -0
  94. package/skills/consulting-analysis/SKILL.md +69 -0
  95. package/skills/context-engineering/SKILL.md +375 -0
  96. package/skills/coverage-review/SKILL.md +24 -0
  97. package/skills/data-analysis/SKILL.md +74 -0
  98. package/skills/deprecation-and-migration/SKILL.md +222 -0
  99. package/skills/documentation-and-adrs/SKILL.md +330 -0
  100. package/skills/e2e-artifact-handling/SKILL.md +30 -0
  101. package/skills/evidence-scoped-retrospective/SKILL.md +156 -0
  102. package/skills/explain-by-allegory/SKILL.md +99 -0
  103. package/skills/flutter-dev/SKILL.md +162 -0
  104. package/skills/flutter-dev/references/animations.md +497 -0
  105. package/skills/flutter-dev/references/bloc-state.md +281 -0
  106. package/skills/flutter-dev/references/forms.md +656 -0
  107. package/skills/flutter-dev/references/gorouter-navigation.md +257 -0
  108. package/skills/flutter-dev/references/localization.md +510 -0
  109. package/skills/flutter-dev/references/networking.md +566 -0
  110. package/skills/flutter-dev/references/performance.md +305 -0
  111. package/skills/flutter-dev/references/platform-specific.md +417 -0
  112. package/skills/flutter-dev/references/project-structure.md +273 -0
  113. package/skills/flutter-dev/references/riverpod-state.md +232 -0
  114. package/skills/flutter-dev/references/testing.md +364 -0
  115. package/skills/flutter-dev/references/widget-patterns.md +233 -0
  116. package/skills/frontend-dev/SKILL.md +468 -0
  117. package/skills/frontend-dev/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  118. package/skills/frontend-dev/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  119. package/skills/frontend-dev/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  120. package/skills/frontend-dev/canvas-fonts/BigShoulders-OFL.txt +93 -0
  121. package/skills/frontend-dev/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  122. package/skills/frontend-dev/canvas-fonts/Boldonse-OFL.txt +93 -0
  123. package/skills/frontend-dev/canvas-fonts/Boldonse-Regular.ttf +0 -0
  124. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  125. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  126. package/skills/frontend-dev/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  127. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  128. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  129. package/skills/frontend-dev/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  130. package/skills/frontend-dev/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  131. package/skills/frontend-dev/canvas-fonts/DMMono-OFL.txt +93 -0
  132. package/skills/frontend-dev/canvas-fonts/DMMono-Regular.ttf +0 -0
  133. package/skills/frontend-dev/canvas-fonts/EricaOne-OFL.txt +94 -0
  134. package/skills/frontend-dev/canvas-fonts/EricaOne-Regular.ttf +0 -0
  135. package/skills/frontend-dev/canvas-fonts/GeistMono-Bold.ttf +0 -0
  136. package/skills/frontend-dev/canvas-fonts/GeistMono-OFL.txt +93 -0
  137. package/skills/frontend-dev/canvas-fonts/GeistMono-Regular.ttf +0 -0
  138. package/skills/frontend-dev/canvas-fonts/Gloock-OFL.txt +93 -0
  139. package/skills/frontend-dev/canvas-fonts/Gloock-Regular.ttf +0 -0
  140. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  141. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  142. package/skills/frontend-dev/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  143. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  144. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  145. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  146. package/skills/frontend-dev/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  147. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  148. package/skills/frontend-dev/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  149. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  150. package/skills/frontend-dev/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  151. package/skills/frontend-dev/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  152. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  153. package/skills/frontend-dev/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  154. package/skills/frontend-dev/canvas-fonts/Italiana-OFL.txt +93 -0
  155. package/skills/frontend-dev/canvas-fonts/Italiana-Regular.ttf +0 -0
  156. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  157. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  158. package/skills/frontend-dev/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  159. package/skills/frontend-dev/canvas-fonts/Jura-Light.ttf +0 -0
  160. package/skills/frontend-dev/canvas-fonts/Jura-Medium.ttf +0 -0
  161. package/skills/frontend-dev/canvas-fonts/Jura-OFL.txt +93 -0
  162. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  163. package/skills/frontend-dev/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  164. package/skills/frontend-dev/canvas-fonts/Lora-Bold.ttf +0 -0
  165. package/skills/frontend-dev/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  166. package/skills/frontend-dev/canvas-fonts/Lora-Italic.ttf +0 -0
  167. package/skills/frontend-dev/canvas-fonts/Lora-OFL.txt +93 -0
  168. package/skills/frontend-dev/canvas-fonts/Lora-Regular.ttf +0 -0
  169. package/skills/frontend-dev/canvas-fonts/NationalPark-Bold.ttf +0 -0
  170. package/skills/frontend-dev/canvas-fonts/NationalPark-OFL.txt +93 -0
  171. package/skills/frontend-dev/canvas-fonts/NationalPark-Regular.ttf +0 -0
  172. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  173. package/skills/frontend-dev/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  174. package/skills/frontend-dev/canvas-fonts/Outfit-Bold.ttf +0 -0
  175. package/skills/frontend-dev/canvas-fonts/Outfit-OFL.txt +93 -0
  176. package/skills/frontend-dev/canvas-fonts/Outfit-Regular.ttf +0 -0
  177. package/skills/frontend-dev/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  178. package/skills/frontend-dev/canvas-fonts/PixelifySans-OFL.txt +93 -0
  179. package/skills/frontend-dev/canvas-fonts/PoiretOne-OFL.txt +93 -0
  180. package/skills/frontend-dev/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  181. package/skills/frontend-dev/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  182. package/skills/frontend-dev/canvas-fonts/RedHatMono-OFL.txt +93 -0
  183. package/skills/frontend-dev/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  184. package/skills/frontend-dev/canvas-fonts/Silkscreen-OFL.txt +93 -0
  185. package/skills/frontend-dev/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  186. package/skills/frontend-dev/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  187. package/skills/frontend-dev/canvas-fonts/SmoochSans-OFL.txt +93 -0
  188. package/skills/frontend-dev/canvas-fonts/Tektur-Medium.ttf +0 -0
  189. package/skills/frontend-dev/canvas-fonts/Tektur-OFL.txt +93 -0
  190. package/skills/frontend-dev/canvas-fonts/Tektur-Regular.ttf +0 -0
  191. package/skills/frontend-dev/canvas-fonts/WorkSans-Bold.ttf +0 -0
  192. package/skills/frontend-dev/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  193. package/skills/frontend-dev/canvas-fonts/WorkSans-Italic.ttf +0 -0
  194. package/skills/frontend-dev/canvas-fonts/WorkSans-OFL.txt +93 -0
  195. package/skills/frontend-dev/canvas-fonts/WorkSans-Regular.ttf +0 -0
  196. package/skills/frontend-dev/canvas-fonts/YoungSerif-OFL.txt +93 -0
  197. package/skills/frontend-dev/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  198. package/skills/frontend-dev/references/asset-prompt-guide.md +43 -0
  199. package/skills/frontend-dev/references/env-setup.md +33 -0
  200. package/skills/frontend-dev/references/minimax-cli-reference.md +133 -0
  201. package/skills/frontend-dev/references/minimax-image-guide.md +65 -0
  202. package/skills/frontend-dev/references/minimax-music-guide.md +216 -0
  203. package/skills/frontend-dev/references/minimax-tts-guide.md +78 -0
  204. package/skills/frontend-dev/references/minimax-video-guide.md +82 -0
  205. package/skills/frontend-dev/references/minimax-voice-catalog.md +685 -0
  206. package/skills/frontend-dev/references/motion-recipes.md +407 -0
  207. package/skills/frontend-dev/references/troubleshooting.md +85 -0
  208. package/skills/frontend-dev/scripts/minimax_image.py +137 -0
  209. package/skills/frontend-dev/scripts/minimax_music.py +157 -0
  210. package/skills/frontend-dev/scripts/minimax_tts.py +127 -0
  211. package/skills/frontend-dev/scripts/minimax_video.py +187 -0
  212. package/skills/frontend-dev/templates/generator_template.js +223 -0
  213. package/skills/frontend-dev/templates/viewer.html +599 -0
  214. package/skills/frontend-ui-engineering/SKILL.md +367 -0
  215. package/skills/fullstack-dev/SKILL.md +819 -0
  216. package/skills/fullstack-dev/references/api-design.md +444 -0
  217. package/skills/fullstack-dev/references/auth-flow.md +165 -0
  218. package/skills/fullstack-dev/references/db-schema.md +706 -0
  219. package/skills/fullstack-dev/references/django-best-practices.md +466 -0
  220. package/skills/fullstack-dev/references/environment-management.md +78 -0
  221. package/skills/fullstack-dev/references/release-checklist.md +278 -0
  222. package/skills/fullstack-dev/references/technology-selection.md +254 -0
  223. package/skills/fullstack-dev/references/testing-strategy.md +404 -0
  224. package/skills/git-workflow-and-versioning/SKILL.md +446 -0
  225. package/skills/github-evidence-triage/SKILL.md +115 -0
  226. package/skills/harness-evolution/SKILL.md +59 -0
  227. package/skills/harness-evolution/references/activation-matrix.md +13 -0
  228. package/skills/harness-evolution/references/approval-policy.md +20 -0
  229. package/skills/harness-evolution/references/change-report-template.md +33 -0
  230. package/skills/harness-evolution/references/component-taxonomy.md +19 -0
  231. package/skills/harness-evolution/references/verdict-policy.md +13 -0
  232. package/skills/harness-issue-triage/SKILL.md +72 -0
  233. package/skills/harness-issue-triage/references/component-diagnosis.md +25 -0
  234. package/skills/harness-issue-triage/references/triage-report-template.md +34 -0
  235. package/skills/harness-optimization-audit/SKILL.md +125 -0
  236. package/skills/idea-refine/SKILL.md +191 -0
  237. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  238. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  239. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/SKILL.upstream.md +178 -0
  240. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/examples.md +238 -0
  241. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/frameworks.md +99 -0
  242. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/refinement-criteria.md +113 -0
  243. package/skills/idea-refine/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/idea-refine/scripts/idea-refine.upstream.sh +15 -0
  244. package/skills/incremental-implementation/SKILL.md +252 -0
  245. package/skills/ios-application-dev/SKILL.md +212 -0
  246. package/skills/ios-application-dev/references/accessibility.md +259 -0
  247. package/skills/ios-application-dev/references/graphics-animation.md +350 -0
  248. package/skills/ios-application-dev/references/layout-system.md +199 -0
  249. package/skills/ios-application-dev/references/metal-shader.md +178 -0
  250. package/skills/ios-application-dev/references/navigation-patterns.md +175 -0
  251. package/skills/ios-application-dev/references/swift-coding-standards.md +757 -0
  252. package/skills/ios-application-dev/references/swiftui-design-guidelines.md +1167 -0
  253. package/skills/ios-application-dev/references/system-integration.md +401 -0
  254. package/skills/ios-application-dev/references/uikit-components.md +297 -0
  255. package/skills/local-review-gate/SKILL.md +207 -0
  256. package/skills/local-review-gate/references/addyosmani-code-review-rubric.md +33 -0
  257. package/skills/local-review-gate/references/codex-github-compatibility.md +26 -0
  258. package/skills/local-review-gate/references/ecc-code-review-adaptation.md +40 -0
  259. package/skills/local-review-gate/references/graphify-local-review.md +33 -0
  260. package/skills/local-review-gate/references/orchestration-adaptation.md +51 -0
  261. package/skills/local-review-gate/references/review-repair-lane-adaptation.md +46 -0
  262. package/skills/local-review-gate/references/upstream-provenance.md +61 -0
  263. package/skills/mature-project-pattern-research/SKILL.md +155 -0
  264. package/skills/mature-project-pattern-research/references/research-rubric.md +45 -0
  265. package/skills/minimax-docx/LICENSE +21 -0
  266. package/skills/minimax-docx/SKILL.md +273 -0
  267. package/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  268. package/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  269. package/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  270. package/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  271. package/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  272. package/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  273. package/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  274. package/skills/minimax-docx/references/cjk_typography.md +357 -0
  275. package/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  276. package/skills/minimax-docx/references/comments_guide.md +191 -0
  277. package/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  278. package/skills/minimax-docx/references/design_principles.md +819 -0
  279. package/skills/minimax-docx/references/openxml_element_order.md +308 -0
  280. package/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  281. package/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  282. package/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  283. package/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  284. package/skills/minimax-docx/references/openxml_units.md +72 -0
  285. package/skills/minimax-docx/references/scenario_a_create.md +284 -0
  286. package/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  287. package/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  288. package/skills/minimax-docx/references/track_changes_guide.md +200 -0
  289. package/skills/minimax-docx/references/troubleshooting.md +506 -0
  290. package/skills/minimax-docx/references/typography_guide.md +294 -0
  291. package/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  292. package/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  293. package/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  294. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  295. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  296. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  297. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  298. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  299. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  300. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  301. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  302. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  303. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  304. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  305. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  306. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  307. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  308. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  309. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  310. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  311. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  312. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  313. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  314. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  315. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  316. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  317. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  318. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  319. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  320. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  321. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  322. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  323. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  324. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  325. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  326. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  327. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  328. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  329. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  330. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  331. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  332. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  333. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  334. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  335. package/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  336. package/skills/minimax-docx/scripts/env_check.sh +196 -0
  337. package/skills/minimax-docx/scripts/setup.ps1 +274 -0
  338. package/skills/minimax-docx/scripts/setup.sh +504 -0
  339. package/skills/minimax-pdf/README.md +222 -0
  340. package/skills/minimax-pdf/SKILL.md +218 -0
  341. package/skills/minimax-pdf/design/design.md +381 -0
  342. package/skills/minimax-pdf/scripts/cover.py +1579 -0
  343. package/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  344. package/skills/minimax-pdf/scripts/fill_write.py +242 -0
  345. package/skills/minimax-pdf/scripts/make.sh +491 -0
  346. package/skills/minimax-pdf/scripts/merge.py +112 -0
  347. package/skills/minimax-pdf/scripts/palette.py +521 -0
  348. package/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  349. package/skills/minimax-pdf/scripts/render_body.py +1052 -0
  350. package/skills/minimax-pdf/scripts/render_cover.js +111 -0
  351. package/skills/minimax-xlsx/SKILL.md +156 -0
  352. package/skills/minimax-xlsx/references/create.md +691 -0
  353. package/skills/minimax-xlsx/references/edit.md +684 -0
  354. package/skills/minimax-xlsx/references/fix.md +37 -0
  355. package/skills/minimax-xlsx/references/format.md +768 -0
  356. package/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  357. package/skills/minimax-xlsx/references/read-analyze.md +97 -0
  358. package/skills/minimax-xlsx/references/validate.md +772 -0
  359. package/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  360. package/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  361. package/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  362. package/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  363. package/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  364. package/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  365. package/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  366. package/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  367. package/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  368. package/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  369. package/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  370. package/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  371. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  372. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  373. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  374. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  375. package/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  376. package/skills/newsletter-generation/SKILL.md +71 -0
  377. package/skills/oss-release-readiness/SKILL.md +47 -0
  378. package/skills/parallel-subagent-dispatch/SKILL.md +58 -0
  379. package/skills/performance-optimization/SKILL.md +364 -0
  380. package/skills/planning-and-task-breakdown/SKILL.md +290 -0
  381. package/skills/pptx-generator/SKILL.md +275 -0
  382. package/skills/pptx-generator/references/design-system.md +392 -0
  383. package/skills/pptx-generator/references/editing.md +162 -0
  384. package/skills/pptx-generator/references/pitfalls.md +112 -0
  385. package/skills/pptx-generator/references/pptxgenjs.md +420 -0
  386. package/skills/pptx-generator/references/slide-types.md +413 -0
  387. package/skills/pr-test-analysis/SKILL.md +24 -0
  388. package/skills/react-native-dev/SKILL.md +180 -0
  389. package/skills/react-native-dev/references/animations.md +254 -0
  390. package/skills/react-native-dev/references/components.md +124 -0
  391. package/skills/react-native-dev/references/engineering.md +527 -0
  392. package/skills/react-native-dev/references/forms.md +300 -0
  393. package/skills/react-native-dev/references/native-capabilities.md +163 -0
  394. package/skills/react-native-dev/references/navigation.md +271 -0
  395. package/skills/react-native-dev/references/networking.md +346 -0
  396. package/skills/react-native-dev/references/performance.md +215 -0
  397. package/skills/react-native-dev/references/state-management.md +230 -0
  398. package/skills/react-native-dev/references/styling.md +117 -0
  399. package/skills/react-native-dev/references/testing.md +341 -0
  400. package/skills/requirements-grilling/SKILL.md +447 -0
  401. package/skills/requirements-grilling/references/ADR-FORMAT.md +46 -0
  402. package/skills/requirements-grilling/references/CONTEXT-FORMAT.md +41 -0
  403. package/skills/requirements-grilling/references/INTERVIEW-PACKET-FORMAT.md +62 -0
  404. package/skills/requirements-grilling/references/MIT-LICENSE-MATT-POCOCK.md +25 -0
  405. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  406. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  407. package/skills/requirements-grilling/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/interview-me/SKILL.upstream.md +225 -0
  408. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/LICENSE +21 -0
  409. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/NOTICE.md +12 -0
  410. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/batch-grill-me/SKILL.upstream.md +15 -0
  411. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grill-me/SKILL.upstream.md +7 -0
  412. package/skills/requirements-grilling/references/upstream/mattpocock-skills/9603c1cc8118d08bc1b3bf34cf714f62178dea3b/grilling/SKILL.upstream.md +12 -0
  413. package/skills/review-pipeline/SKILL.md +38 -0
  414. package/skills/rose-memory/SKILL.md +210 -0
  415. package/skills/rose-memory/references/README.md +48 -0
  416. package/skills/rose-memory/references/memory_cli.py +2384 -0
  417. package/skills/rose-memory/references/schema.sql +315 -0
  418. package/skills/security-and-hardening/SKILL.md +369 -0
  419. package/skills/session-handoff/SKILL.md +88 -0
  420. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  421. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  422. package/skills/session-handoff/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/handoff/SKILL.upstream.md +16 -0
  423. package/skills/session-handoff/scripts/session_handoff.py +764 -0
  424. package/skills/shader-dev/SKILL.md +316 -0
  425. package/skills/shader-dev/reference/ambient-occlusion.md +382 -0
  426. package/skills/shader-dev/reference/analytic-ray-tracing.md +651 -0
  427. package/skills/shader-dev/reference/anti-aliasing.md +71 -0
  428. package/skills/shader-dev/reference/atmospheric-scattering.md +571 -0
  429. package/skills/shader-dev/reference/camera-effects.md +80 -0
  430. package/skills/shader-dev/reference/cellular-automata.md +635 -0
  431. package/skills/shader-dev/reference/color-palette.md +481 -0
  432. package/skills/shader-dev/reference/csg-boolean-operations.md +466 -0
  433. package/skills/shader-dev/reference/domain-repetition.md +436 -0
  434. package/skills/shader-dev/reference/domain-warping.md +419 -0
  435. package/skills/shader-dev/reference/fluid-simulation.md +425 -0
  436. package/skills/shader-dev/reference/fractal-rendering.md +525 -0
  437. package/skills/shader-dev/reference/lighting-model.md +639 -0
  438. package/skills/shader-dev/reference/matrix-transform.md +535 -0
  439. package/skills/shader-dev/reference/multipass-buffer.md +571 -0
  440. package/skills/shader-dev/reference/normal-estimation.md +418 -0
  441. package/skills/shader-dev/reference/particle-system.md +589 -0
  442. package/skills/shader-dev/reference/path-tracing-gi.md +602 -0
  443. package/skills/shader-dev/reference/polar-uv-manipulation.md +521 -0
  444. package/skills/shader-dev/reference/post-processing.md +375 -0
  445. package/skills/shader-dev/reference/procedural-2d-pattern.md +439 -0
  446. package/skills/shader-dev/reference/procedural-noise.md +551 -0
  447. package/skills/shader-dev/reference/ray-marching.md +396 -0
  448. package/skills/shader-dev/reference/sdf-2d.md +724 -0
  449. package/skills/shader-dev/reference/sdf-3d.md +805 -0
  450. package/skills/shader-dev/reference/sdf-tricks.md +63 -0
  451. package/skills/shader-dev/reference/shadow-techniques.md +476 -0
  452. package/skills/shader-dev/reference/simulation-physics.md +644 -0
  453. package/skills/shader-dev/reference/sound-synthesis.md +578 -0
  454. package/skills/shader-dev/reference/terrain-rendering.md +839 -0
  455. package/skills/shader-dev/reference/texture-mapping-advanced.md +87 -0
  456. package/skills/shader-dev/reference/texture-sampling.md +553 -0
  457. package/skills/shader-dev/reference/volumetric-rendering.md +608 -0
  458. package/skills/shader-dev/reference/voronoi-cellular-noise.md +486 -0
  459. package/skills/shader-dev/reference/voxel-rendering.md +701 -0
  460. package/skills/shader-dev/reference/water-ocean.md +445 -0
  461. package/skills/shader-dev/reference/webgl-pitfalls.md +41 -0
  462. package/skills/shader-dev/techniques/ambient-occlusion.md +364 -0
  463. package/skills/shader-dev/techniques/analytic-ray-tracing.md +542 -0
  464. package/skills/shader-dev/techniques/anti-aliasing.md +124 -0
  465. package/skills/shader-dev/techniques/atmospheric-scattering.md +522 -0
  466. package/skills/shader-dev/techniques/camera-effects.md +115 -0
  467. package/skills/shader-dev/techniques/cellular-automata.md +531 -0
  468. package/skills/shader-dev/techniques/color-palette.md +380 -0
  469. package/skills/shader-dev/techniques/csg-boolean-operations.md +491 -0
  470. package/skills/shader-dev/techniques/domain-repetition.md +333 -0
  471. package/skills/shader-dev/techniques/domain-warping.md +414 -0
  472. package/skills/shader-dev/techniques/fluid-simulation.md +1175 -0
  473. package/skills/shader-dev/techniques/fractal-rendering.md +436 -0
  474. package/skills/shader-dev/techniques/lighting-model.md +527 -0
  475. package/skills/shader-dev/techniques/matrix-transform.md +455 -0
  476. package/skills/shader-dev/techniques/multipass-buffer.md +922 -0
  477. package/skills/shader-dev/techniques/normal-estimation.md +318 -0
  478. package/skills/shader-dev/techniques/particle-system.md +1203 -0
  479. package/skills/shader-dev/techniques/path-tracing-gi.md +623 -0
  480. package/skills/shader-dev/techniques/polar-uv-manipulation.md +373 -0
  481. package/skills/shader-dev/techniques/post-processing.md +788 -0
  482. package/skills/shader-dev/techniques/procedural-2d-pattern.md +346 -0
  483. package/skills/shader-dev/techniques/procedural-noise.md +554 -0
  484. package/skills/shader-dev/techniques/ray-marching.md +467 -0
  485. package/skills/shader-dev/techniques/sdf-2d.md +631 -0
  486. package/skills/shader-dev/techniques/sdf-3d.md +589 -0
  487. package/skills/shader-dev/techniques/sdf-tricks.md +100 -0
  488. package/skills/shader-dev/techniques/shadow-techniques.md +776 -0
  489. package/skills/shader-dev/techniques/simulation-physics.md +1542 -0
  490. package/skills/shader-dev/techniques/sound-synthesis.md +490 -0
  491. package/skills/shader-dev/techniques/terrain-rendering.md +408 -0
  492. package/skills/shader-dev/techniques/texture-mapping-advanced.md +121 -0
  493. package/skills/shader-dev/techniques/texture-sampling.md +382 -0
  494. package/skills/shader-dev/techniques/volumetric-rendering.md +375 -0
  495. package/skills/shader-dev/techniques/voronoi-cellular-noise.md +458 -0
  496. package/skills/shader-dev/techniques/voxel-rendering.md +985 -0
  497. package/skills/shader-dev/techniques/water-ocean.md +490 -0
  498. package/skills/shader-dev/techniques/webgl-pitfalls.md +170 -0
  499. package/skills/shipping-and-launch/SKILL.md +334 -0
  500. package/skills/silent-failure-hunting/SKILL.md +24 -0
  501. package/skills/source-driven-development/SKILL.md +223 -0
  502. package/skills/spec-driven-development/SKILL.md +235 -0
  503. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/LICENSE +21 -0
  504. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/NOTICE.md +9 -0
  505. package/skills/spec-driven-development/references/upstream/addyosmani-agent-skills/6bcfeb9dae52b11eaad23511acc165109746dbc3/spec-driven-development/SKILL.upstream.md +206 -0
  506. package/skills/strategy-stress-test/SKILL.md +185 -0
  507. package/skills/systematic-literature-review/SKILL.md +77 -0
  508. package/skills/test-document-generator/SKILL.md +152 -0
  509. package/skills/test-document-generator/references/test-document-template.md +45 -0
  510. package/skills/test-driven-development/SKILL.md +399 -0
  511. package/skills/write-skills/GLOSSARY.md +113 -0
  512. package/skills/write-skills/SKILL.md +133 -0
  513. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/LICENSE +21 -0
  514. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/NOTICE.md +9 -0
  515. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/GLOSSARY.md +201 -0
  516. package/skills/write-skills/references/upstream/mattpocock-skills/391a2701dd948f94f56a39f7533f8eea9a859c87/productivity/writing-great-skills/SKILL.upstream.md +83 -0
  517. package/src/runtime/child-guard.ts +70 -0
  518. package/src/runtime/conflicts.ts +25 -0
  519. package/src/runtime/contracts.ts +9 -0
  520. package/src/runtime/doctor.ts +134 -0
  521. package/src/runtime/global-resources.ts +152 -0
  522. package/src/runtime/index.ts +23 -0
  523. package/src/runtime/lifecycle.ts +19 -0
  524. package/src/runtime/native-integrations.ts +44 -0
  525. package/src/runtime/path-boundaries.ts +69 -0
  526. package/src/runtime/registry.ts +213 -0
  527. package/src/runtime/roles.ts +64 -0
  528. package/src/runtime/rose-context.ts +24 -0
  529. package/src/runtime/subagents.ts +426 -0
  530. package/templates/APPEND_SYSTEM.md +12 -0
  531. 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)