@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,551 @@
1
+ # Procedural Noise — Detailed Reference
2
+
3
+ This document is a detailed supplement to [SKILL.md](SKILL.md), containing step-by-step tutorials, mathematical derivations, and advanced usage.
4
+
5
+ ## Prerequisites
6
+
7
+ - **GLSL Basics**: uniform, varying, built-in functions (`fract`, `floor`, `mix`, `smoothstep`, `dot`, `sin`/`cos`)
8
+ - **Vector Math**: dot product, cross product, matrix multiplication (`mat2` rotation matrix)
9
+ - **Coordinate Spaces**: UV coordinate normalization, screen aspect ratio correction
10
+ - **Interpolation Theory**: linear interpolation, Hermite interpolation `3t^2-2t^3` (smoothstep)
11
+ - **ShaderToy Environment**: `iTime`, `iResolution`, `fragCoord`, `mainImage` signature
12
+
13
+ ## Use Cases in Detail
14
+
15
+ Procedural noise is the most fundamental and versatile technique in real-time GPU graphics, applicable to:
16
+
17
+ - **Natural phenomena simulation**: fire, clouds, water surfaces, lava, lightning, smoke, etc.
18
+ - **Terrain generation**: mountains, canyons, erosion landscapes, snowline distribution
19
+ - **Texture synthesis**: marble textures, wood grain, organic patterns, abstract art
20
+ - **Volume rendering**: volumetric clouds, volumetric fog, light scattering
21
+ - **Motion effects**: fluid simulation approximation, particle trajectory perturbation, domain warping animation
22
+
23
+ Core idea: instead of using pre-made textures, generate pseudo-random, spatially continuous signals in real-time on the GPU through mathematical functions, then produce rich multi-scale detail through fractal summation (FBM) and Domain Warping.
24
+
25
+ ## Core Principles in Detail
26
+
27
+ ### 1. Noise Functions — Building Continuous Pseudo-Random Signals
28
+
29
+ The essence of a noise function is: **generate random values at integer lattice points, then smoothly interpolate between them**.
30
+
31
+ Two mainstream implementations:
32
+
33
+ **Value Noise**: each lattice point stores a random scalar, bilinear interpolation yields a continuous field.
34
+ - Formula: `N(p) = mix(mix(h00, h10, u), mix(h01, h11, u), v)`, where `u,v` are the fractional parts after Hermite smoothing
35
+
36
+ **Simplex Noise**: uses gradient dot products + radial falloff kernels on a triangular lattice (2D) or tetrahedral lattice (3D).
37
+ - Advantages: fewer lattice lookups (2D: 3 vs 4), no axis-aligned artifacts, lower computational cost
38
+ - Core: skew transform maps square grid to triangular grid, using `K1=(sqrt(3)-1)/2` for skewing, `K2=(3-sqrt(3))/6` for unskewing
39
+
40
+ ### 2. Hash Functions — Source of Lattice Random Values
41
+
42
+ Hash functions map integer coordinates to pseudo-random values in [0,1] or [-1,1]:
43
+
44
+ - **sin-based hash** (classic but has precision risks): `fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453)`
45
+ - **sin-free hash** (cross-platform stable): pure arithmetic `fract(p * 0.1031)` + `dot` mixing + `fract` output
46
+
47
+ ### 3. FBM (Fractional Brownian Motion) — Multi-Scale Detail Summation
48
+
49
+ Sum multiple noise "octaves" at different frequencies and amplitudes:
50
+
51
+ ```
52
+ FBM(p) = sum( amplitude_i * noise(frequency_i * p) )
53
+ ```
54
+
55
+ Standard parameters:
56
+ - **Lacunarity (frequency multiplier)**: each octave's frequency multiplied by ~2.0
57
+ - **Persistence/Gain (amplitude decay)**: each octave's amplitude multiplied by ~0.5
58
+ - **Inter-octave rotation**: use a rotation matrix to eliminate axis-aligned artifacts
59
+
60
+ ### 4. Domain Warping — Organic Distortion
61
+
62
+ Feed the output of noise back as coordinate offsets, producing distorted organic patterns:
63
+ - **Single-layer warping**: `fbm(p + fbm(p))`
64
+ - **Multi-layer cascade**: `fbm(p + fbm(p + fbm(p)))` — classic three-layer domain warping
65
+
66
+ ### 5. FBM Variants — Different Visual Characteristics
67
+
68
+ | Variant | Formula | Visual Effect |
69
+ |---------|---------|---------------|
70
+ | Standard FBM | `sum( a*noise(p) )` | Smooth, soft (cloud interiors) |
71
+ | Ridged FBM | `sum( a*abs(noise(p)) )` | Sharp creases (ridges, lightning) |
72
+ | Sinusoidal ridged | `sum( a*sin(noise(p)*k) )` | Periodic ridges (lava) |
73
+ | Erosion FBM | `sum( a*noise(p)/(1+dot(d,d)) )` | Smooth ridges, fine valleys (terrain) |
74
+ | Sea wave FBM | `sum( a*octave_fn(p) )` | Sharp wave crests (ocean surface) |
75
+
76
+ ## Step-by-Step Implementation Details
77
+
78
+ ### Step 1: Hash Function
79
+
80
+ **What**: Implement a hash function that maps 2D integer coordinates to pseudo-random values.
81
+
82
+ **Why**: Hashing is the fundamental building block of all noise. The sin-free version is stable across GPUs; the sin version is more concise.
83
+
84
+ **Code (sin-free version)**:
85
+ ```glsl
86
+ // 2D -> 1D hash, sin-free, cross-platform stable
87
+ float hash12(vec2 p) {
88
+ vec3 p3 = fract(vec3(p.xyx) * .1031);
89
+ p3 += dot(p3, p3.yzx + 33.33);
90
+ return fract((p3.x + p3.y) * p3.z);
91
+ }
92
+
93
+ // 2D -> 2D hash (for gradient noise)
94
+ vec2 hash22(vec2 p) {
95
+ vec3 p3 = fract(vec3(p.xyx) * vec3(.1031, .1030, .0973));
96
+ p3 += dot(p3, p3.yzx + 33.33);
97
+ return fract((p3.xx + p3.yz) * p3.zy);
98
+ }
99
+ ```
100
+
101
+ **Code (classic sin version)**:
102
+ ```glsl
103
+ float hash(vec2 p) {
104
+ float h = dot(p, vec2(127.1, 311.7));
105
+ return fract(sin(h) * 43758.5453123);
106
+ }
107
+
108
+ // Gradient version, output [-1, 1]
109
+ vec2 hash2(vec2 p) {
110
+ p = vec2(dot(p, vec2(127.1, 311.7)),
111
+ dot(p, vec2(269.5, 183.3)));
112
+ return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);
113
+ }
114
+ ```
115
+
116
+ ### Step 2: Value Noise
117
+
118
+ **What**: Perform Hermite-smoothed interpolation between hashed values at integer lattice points to obtain a continuous 2D noise field.
119
+
120
+ **Why**: Value noise is the simplest noise implementation with minimal code, suitable as a foundation for FBM and domain warping. Using the `smoothstep` polynomial `3t^2-2t^3` directly guarantees C1 continuity (no seam discontinuities).
121
+
122
+ **Code**:
123
+ ```glsl
124
+ float noise(in vec2 x) {
125
+ vec2 p = floor(x); // Integer lattice point
126
+ vec2 f = fract(x); // Fractional part within cell
127
+ f = f * f * (3.0 - 2.0 * f); // Hermite smoothing (can substitute quintic: 6t^5-15t^4+10t^3)
128
+ float a = hash(p + vec2(0.0, 0.0));
129
+ float b = hash(p + vec2(1.0, 0.0));
130
+ float c = hash(p + vec2(0.0, 1.0));
131
+ float d = hash(p + vec2(1.0, 1.0));
132
+ return mix(mix(a, b, f.x), mix(c, d, f.x), f.y); // Bilinear interpolation
133
+ }
134
+ ```
135
+
136
+ ### Step 3: Simplex Noise
137
+
138
+ **What**: Use gradient dot products and radial falloff kernels on a triangular grid to generate isotropic 2D noise.
139
+
140
+ **Why**: Compared to value noise, Simplex Noise has no axis-aligned artifacts, lower computational cost (2D requires only 3 lattice points instead of 4), and higher visual quality. Suitable for scenarios requiring high-quality noise (fire, clouds).
141
+
142
+ **Code**:
143
+ ```glsl
144
+ float noise(in vec2 p) {
145
+ const float K1 = 0.366025404; // (sqrt(3)-1)/2 — skew factor
146
+ const float K2 = 0.211324865; // (3-sqrt(3))/6 — unskew factor
147
+
148
+ vec2 i = floor(p + (p.x + p.y) * K1); // Skew to triangular grid
149
+
150
+ vec2 a = p - i + (i.x + i.y) * K2; // Vertex 0 offset
151
+ vec2 o = (a.x > a.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); // Determine which triangle
152
+ vec2 b = a - o + K2; // Vertex 1 offset
153
+ vec2 c = a - 1.0 + 2.0 * K2; // Vertex 2 offset
154
+
155
+ vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0); // Radial falloff
156
+ vec3 n = h * h * h * h * vec3( // h^4 kernel * gradient dot product
157
+ dot(a, hash2(i + 0.0)),
158
+ dot(b, hash2(i + o)),
159
+ dot(c, hash2(i + 1.0))
160
+ );
161
+ return dot(n, vec3(70.0)); // Normalize to ~[-1, 1]
162
+ }
163
+ ```
164
+
165
+ ### Step 4: Standard FBM (Fractional Brownian Motion)
166
+
167
+ **What**: Sum multiple octaves of noise with decreasing amplitudes to obtain a multi-scale fractal signal.
168
+
169
+ **Why**: A single noise octave has a single frequency and cannot produce the multi-scale detail found in nature. FBM simulates fractal self-similarity by summing noise at different frequencies. **The inter-octave rotation matrix is a key technique** that breaks axis-aligned artifacts.
170
+
171
+ **Code (4-octave loop version)**:
172
+ ```glsl
173
+ #define OCTAVES 4 // Tunable: number of octaves (1-8), more = richer detail but more expensive
174
+ #define GAIN 0.5 // Tunable: amplitude decay (0.3-0.7), higher = more prominent high frequencies
175
+ #define LACUNARITY 2.0 // Tunable: frequency multiplier (1.5-3.0), higher = larger gap between octaves
176
+
177
+ float fbm(vec2 p) {
178
+ // Encodes both rotation and scaling, eliminates axis-aligned artifacts
179
+ // |m| = sqrt(1.6^2+1.2^2) = 2.0, rotation angle ~ 36.87 degrees
180
+ mat2 m = mat2(1.6, 1.2, -1.2, 1.6);
181
+
182
+ float f = 0.0;
183
+ float a = 0.5; // Initial amplitude
184
+ for (int i = 0; i < OCTAVES; i++) {
185
+ f += a * noise(p);
186
+ p = m * p; // Rotation + frequency scaling
187
+ a *= GAIN; // Amplitude decay
188
+ }
189
+ return f;
190
+ }
191
+ ```
192
+
193
+ **Manually unrolled version (with slightly varying lacunarity)**:
194
+ ```glsl
195
+ // Slightly varying lacunarity (2.01, 2.02, 2.03...) breaks exact self-similarity
196
+ const mat2 mtx = mat2(0.80, 0.60, -0.60, 0.80); // Pure rotation ~36.87 degrees
197
+
198
+ float fbm4(vec2 p) {
199
+ float f = 0.0;
200
+ f += 0.5000 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.02;
201
+ f += 0.2500 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.03;
202
+ f += 0.1250 * (-1.0 + 2.0 * noise(p)); p = mtx * p * 2.01;
203
+ f += 0.0625 * (-1.0 + 2.0 * noise(p));
204
+ return f / 0.9375; // Normalization
205
+ }
206
+ ```
207
+
208
+ ### Step 5: Ridged FBM
209
+
210
+ **What**: Take the absolute value of noise before summation, producing sharp "ridges" at zero crossings.
211
+
212
+ **Why**: Standard FBM produces overly smooth patterns and cannot represent sharp structures like lightning, mountain ridges, or cracks. The `abs()` operation folds the noise's zero crossings into sharp V-shaped ridge lines.
213
+
214
+ **Code**:
215
+ ```glsl
216
+ float fbm_ridged(in vec2 p) {
217
+ float z = 2.0;
218
+ float rz = 0.0;
219
+ for (float i = 1.0; i < 6.0; i++) {
220
+ // abs((noise-0.5)*2) maps [0,1] to a V-shape in [0,1]
221
+ rz += abs((noise(p) - 0.5) * 2.0) / z;
222
+ z *= 2.0; // Amplitude decay (1/z)
223
+ p *= 2.0; // Frequency scaling
224
+ }
225
+ return rz;
226
+ }
227
+ ```
228
+
229
+ **Sinusoidal ridged variant**:
230
+ ```glsl
231
+ // sin(noise*7) produces smoother periodic ridges, suitable for lava textures
232
+ rz += (sin(noise(p) * 7.0) * 0.5 + 0.5) / z;
233
+ ```
234
+
235
+ ### Step 6: Domain Warping
236
+
237
+ **What**: Use the output of noise/FBM to distort the input coordinates of subsequent noise, producing organic distortion patterns.
238
+
239
+ **Why**: Domain warping is the core technique for producing "painterly", "ink wash", "geological" and other organic patterns. The number of nested warping layers controls complexity.
240
+
241
+ **Basic domain warping**:
242
+ ```glsl
243
+ // Low-frequency FBM as offset to distort subsequent sampling
244
+ float q = fbm(uv * 0.5); // Low-frequency domain warping field
245
+ uv -= q - time; // Use q to offset sampling coordinates
246
+ float f = fbm(uv); // Sample at warped coordinates
247
+ ```
248
+
249
+ **Classic three-layer cascaded domain warping**:
250
+ ```glsl
251
+ // Two independent FBMs produce decorrelated vec2 offsets
252
+ vec2 fbm4_2(vec2 p) {
253
+ return vec2(fbm4(p + vec2(1.0)), fbm4(p + vec2(6.2))); // Different offsets for decorrelation
254
+ }
255
+
256
+ float func(vec2 q, out vec2 o, out vec2 n) {
257
+ // Layer 1: q -> 4-octave FBM -> 2D offset field o
258
+ o = 0.5 + 0.5 * fbm4_2(q);
259
+
260
+ // Layer 2: o -> 6-octave FBM -> 2D offset field n (higher frequency)
261
+ n = fbm6_2(4.0 * o);
262
+
263
+ // Layer 3: original coordinates + offsets -> final FBM sampling
264
+ vec2 p = q + 2.0 * n + 1.0;
265
+ float f = 0.5 + 0.5 * fbm4(2.0 * p);
266
+
267
+ // Contrast enhancement: boost contrast in heavily warped areas
268
+ f = mix(f, f * f * f * 3.5, f * abs(n.x));
269
+ return f;
270
+ }
271
+ ```
272
+
273
+ **Dual-axis FBM domain warping**:
274
+ ```glsl
275
+ float dualfbm(in vec2 p) {
276
+ vec2 p2 = p * 0.7;
277
+ // Two independent FBMs offset X/Y axes separately, different time offsets avoid symmetry
278
+ vec2 basis = vec2(fbm(p2 - time * 1.6), fbm(p2 + time * 1.7));
279
+ basis = (basis - 0.5) * 0.2; // Center + scale
280
+ p += basis;
281
+ return fbm(p * makem2(time * 0.2)); // Final sampling after rotation
282
+ }
283
+ ```
284
+
285
+ ### Step 7: Flow Noise
286
+
287
+ **What**: Apply independent gradient field displacement within each FBM octave, simulating fluid transport effects.
288
+
289
+ **Why**: Ordinary domain warping is "global" (distorting before or after FBM), while flow noise is "per-octave" — each frequency layer has its own flow direction and speed, producing extremely realistic lava and fluid effects.
290
+
291
+ **Code**:
292
+ ```glsl
293
+ #define FLOW_SPEED 0.6 // Tunable: main flow speed
294
+ #define BASE_SPEED 1.9 // Tunable: base point flow speed
295
+ #define ADVECTION 0.77 // Tunable: advection factor (0.5=stable, 0.95=turbulent)
296
+ #define GRAD_SCALE 0.5 // Tunable: gradient displacement strength
297
+
298
+ // Noise gradient (central differences)
299
+ vec2 gradn(vec2 p) {
300
+ float ep = 0.09;
301
+ float gradx = noise(vec2(p.x + ep, p.y)) - noise(vec2(p.x - ep, p.y));
302
+ float grady = noise(vec2(p.x, p.y + ep)) - noise(vec2(p.x, p.y - ep));
303
+ return vec2(gradx, grady);
304
+ }
305
+
306
+ float flow(in vec2 p) {
307
+ float z = 2.0;
308
+ float rz = 0.0;
309
+ vec2 bp = p; // Base point (prevents advection divergence)
310
+ for (float i = 1.0; i < 7.0; i++) {
311
+ p += time * FLOW_SPEED; // Main flow displacement
312
+ bp += time * BASE_SPEED; // Base flow displacement
313
+ vec2 gr = gradn(i * p * 0.34 + time * 1.0); // Noise gradient field
314
+ gr *= makem2(time * 6.0 - (0.05 * p.x + 0.03 * p.y) * 40.0); // Spatially varying rotation
315
+ p += gr * GRAD_SCALE; // Gradient displacement
316
+ rz += (sin(noise(p) * 7.0) * 0.5 + 0.5) / z; // Sinusoidal ridged accumulation
317
+ p = mix(bp, p, ADVECTION); // Mix back to base (prevent divergence)
318
+ z *= 1.4; // Amplitude decay
319
+ p *= 2.0; // Frequency scaling
320
+ bp *= 1.9; // Base frequency scaling (slightly different)
321
+ }
322
+ return rz;
323
+ }
324
+ ```
325
+
326
+ ### Step 8: Derivative FBM
327
+
328
+ **What**: Track the analytical gradient of noise during FBM accumulation, using the accumulated gradient magnitude to suppress high-frequency detail in steep areas.
329
+
330
+ **Why**: This is a signature technique for terrain rendering. Standard FBM adds detail uniformly across all areas, but natural terrain has smooth ridges due to hydraulic erosion while valleys retain fine detail. Derivative FBM automatically simulates this erosion effect through the `1/(1+|gradient|^2)` factor.
331
+
332
+ **Code**:
333
+ ```glsl
334
+ // Value noise with analytical derivative: returns vec3(value, d/dx, d/dy)
335
+ vec3 noised(in vec2 x) {
336
+ vec2 p = floor(x);
337
+ vec2 f = fract(x);
338
+ vec2 u = f * f * (3.0 - 2.0 * f); // Hermite interpolation
339
+ vec2 du = 6.0 * f * (1.0 - f); // Hermite derivative (analytical)
340
+
341
+ float a = hash(p + vec2(0, 0));
342
+ float b = hash(p + vec2(1, 0));
343
+ float c = hash(p + vec2(0, 1));
344
+ float d = hash(p + vec2(1, 1));
345
+
346
+ return vec3(
347
+ a + (b - a) * u.x + (c - a) * u.y + (a - b - c + d) * u.x * u.y, // Value
348
+ du * (vec2(b - a, c - a) + (a - b - c + d) * u.yx) // Gradient
349
+ );
350
+ }
351
+
352
+ #define TERRAIN_OCTAVES 16 // Tunable: terrain octave count (5-16), more = finer detail
353
+ #define TERRAIN_GAIN 0.5 // Tunable: amplitude decay
354
+
355
+ float terrainFBM(in vec2 x) {
356
+ const mat2 m2 = mat2(0.8, -0.6, 0.6, 0.8); // Pure rotation ~36.87 degrees
357
+ float a = 0.0; // Accumulated value
358
+ float b = 1.0; // Current amplitude
359
+ vec2 d = vec2(0.0); // Accumulated gradient
360
+
361
+ for (int i = 0; i < TERRAIN_OCTAVES; i++) {
362
+ vec3 n = noised(x); // (value, dx, dy)
363
+ d += n.yz; // Accumulate gradient
364
+ a += b * n.x / (1.0 + dot(d, d)); // Key: larger gradient = smaller contribution (erosion effect)
365
+ b *= TERRAIN_GAIN;
366
+ x = m2 * x * 2.0; // Rotation + frequency scaling
367
+ }
368
+ return a;
369
+ }
370
+ ```
371
+
372
+ ## Common Variants in Detail
373
+
374
+ ### Variant 1: Ridged FBM (Ridged/Turbulent FBM)
375
+
376
+ - **Difference from base version**: applies `abs()` to noise values, producing sharp ridge lines at zero crossings
377
+ - **Use cases**: lightning, mountain ridges, cracks, veins, electric arcs
378
+ - **Key modified code**:
379
+ ```glsl
380
+ // Standard FBM line:
381
+ f += a * noise(p);
382
+ // Changed to ridged:
383
+ f += a * abs(noise(p));
384
+ // Or sinusoidal ridged (smoother periodic ridges, suitable for lava):
385
+ f += a * (sin(noise(p) * 7.0) * 0.5 + 0.5);
386
+ ```
387
+
388
+ ### Variant 2: Domain Warped FBM
389
+
390
+ - **Difference from base version**: FBM output is fed back as coordinate offsets, producing organic distortion
391
+ - **Use cases**: cloud deformation, geological textures, ink wash style, abstract art
392
+ - **Key modified code**:
393
+ ```glsl
394
+ // Classic three-layer domain warping
395
+ vec2 o = 0.5 + 0.5 * vec2(fbm(q + vec2(1.0)), fbm(q + vec2(6.2)));
396
+ vec2 n = vec2(fbm(4.0 * o + vec2(9.2)), fbm(4.0 * o + vec2(5.7)));
397
+ float f = 0.5 + 0.5 * fbm(q + 2.0 * n + 1.0);
398
+ ```
399
+
400
+ ### Variant 3: Derivative Erosion FBM
401
+
402
+ - **Difference from base version**: tracks analytical gradient, suppresses high frequencies in steep areas (simulates hydraulic erosion)
403
+ - **Use cases**: realistic terrain, mountains, canyons
404
+ - **Key modified code**:
405
+ ```glsl
406
+ vec2 d = vec2(0.0); // Accumulated gradient
407
+ for (int i = 0; i < N; i++) {
408
+ vec3 n = noised(p); // (value, dx, dy)
409
+ d += n.yz; // Accumulate gradient
410
+ a += b * n.x / (1.0 + dot(d, d)); // Key: divide by gradient magnitude
411
+ b *= 0.5;
412
+ p = m2 * p * 2.0;
413
+ }
414
+ ```
415
+
416
+ ### Variant 4: Flow Noise
417
+
418
+ - **Difference from base version**: applies independent gradient field displacement within each octave, simulating fluid transport
419
+ - **Use cases**: lava, liquid metal, flowing magma
420
+ - **Key modified code**:
421
+ ```glsl
422
+ for (float i = 1.0; i < 7.0; i++) {
423
+ vec2 gr = gradn(i * p * 0.34 + time); // Gradient field
424
+ gr *= makem2(time * 6.0 - (0.05 * p.x + 0.03 * p.y) * 40.0); // Spatially varying rotation
425
+ p += gr * 0.5; // Displacement
426
+ rz += (sin(noise(p) * 7.0) * 0.5 + 0.5) / z; // Accumulation
427
+ p = mix(bp, p, 0.77); // Mix back to base
428
+ }
429
+ ```
430
+
431
+ ### Variant 5: Custom Sea Octave FBM
432
+
433
+ - **Difference from base version**: uses `1-abs(sin(uv))` to construct peaked waveforms, combined with bidirectional propagation and choppy decay
434
+ - **Use cases**: ocean water surface, waves
435
+ - **Key modified code**:
436
+ ```glsl
437
+ float sea_octave(vec2 uv, float choppy) {
438
+ uv += noise(uv); // Noise domain perturbation
439
+ vec2 wv = 1.0 - abs(sin(uv)); // Peaked waveform
440
+ vec2 swv = abs(cos(uv)); // Smooth waveform
441
+ wv = mix(wv, swv, wv); // Adaptive blending
442
+ return pow(1.0 - pow(wv.x * wv.y, 0.65), choppy);
443
+ }
444
+ // Bidirectional propagation in FBM loop:
445
+ d = sea_octave((uv + SEA_TIME) * freq, choppy);
446
+ d += sea_octave((uv - SEA_TIME) * freq, choppy);
447
+ choppy = mix(choppy, 1.0, 0.2); // Higher octaves are smoother
448
+ ```
449
+
450
+ ## Performance Optimization Details
451
+
452
+ ### 1. Reduce Octave Count (Most Direct)
453
+
454
+ Each additional octave doubles the noise sampling cost. Distant objects can use fewer octaves:
455
+ ```glsl
456
+ // LOD-aware octave count
457
+ int oct = 5 - int(log2(1.0 + t * 0.5)); // Fewer octaves at greater distances
458
+ ```
459
+
460
+ ### 2. Multi-Level LOD Strategy
461
+
462
+ Provide functions at different precision levels for different purposes:
463
+ ```glsl
464
+ float terrainL(vec2 x) { /* 3 octaves — for camera height */ }
465
+ float terrainM(vec2 x) { /* 9 octaves — for ray marching */ }
466
+ float terrainH(vec2 x) { /* 16 octaves — for normal calculation */ }
467
+ ```
468
+
469
+ ### 3. Use Texture Sampling Instead of Math
470
+
471
+ Store precomputed noise in textures, using hardware texture filtering instead of arithmetic hashing:
472
+ ```glsl
473
+ float noise(in vec2 x) { return texture(iChannel0, x * 0.01).x; }
474
+ // Or use texelFetch for exact lookup:
475
+ float a = texelFetch(iChannel0, (p + 0) & 255, 0).x;
476
+ ```
477
+
478
+ ### 4. Manually Unroll Loops
479
+
480
+ GLSL compilers typically optimize manually unrolled small loops (4-6 iterations) better than `for` loops, and allow slightly varying lacunarity per octave.
481
+
482
+ ### 5. Adaptive Step Size (Volume Rendering)
483
+
484
+ ```glsl
485
+ // Step size grows linearly with distance
486
+ float dt = max(0.05, 0.02 * t);
487
+ ```
488
+
489
+ ### 6. Directional Derivative Instead of Full Gradient (Volumetric Lighting)
490
+
491
+ ```glsl
492
+ // 1 extra sample vs 3
493
+ float dif = clamp((den - map(pos + 0.3 * sundir)) / 0.25, 0.0, 1.0);
494
+ ```
495
+
496
+ ### 7. Early Termination
497
+
498
+ ```glsl
499
+ if (sum.a > 0.99) break; // Volume is already opaque, stop marching
500
+ ```
501
+
502
+ ## Combination Suggestions in Detail
503
+
504
+ ### 1. FBM + Ray Marching
505
+
506
+ Noise drives a height field or density field, ray marching finds intersections. This is the standard combination for terrain and ocean surface rendering:
507
+ - Height field: `height = terrainFBM(pos.xz)`, ray march to find the intersection where `pos.y == height`
508
+ - Volume field: `density = fbm(pos)`, forward-accumulate transmittance and color
509
+
510
+ ### 2. FBM + Finite Difference Normals + Lighting
511
+
512
+ Use finite differences on a 2D noise field to estimate normals, adding pseudo-3D lighting effects:
513
+ ```glsl
514
+ vec3 nor = normalize(vec3(f(p+ex)-f(p), epsilon, f(p+ey)-f(p)));
515
+ float dif = dot(nor, lightDir);
516
+ ```
517
+
518
+ ### 3. FBM + Color Mapping
519
+
520
+ Map the same scalar at different power exponents to RGB channels, producing natural color gradients:
521
+ ```glsl
522
+ vec3 col = vec3(1.5*c, 1.5*c*c*c, c*c*c*c*c*c); // Fire: red -> orange -> yellow -> white
523
+ ```
524
+ Or inverse color mapping:
525
+ ```glsl
526
+ vec3 col = vec3(0.2, 0.07, 0.01) / rz; // Areas with small ridge values are brightest
527
+ ```
528
+
529
+ ### 4. FBM + Fresnel Water Surface Coloring
530
+
531
+ Noise drives water surface waveforms, Fresnel equations blend reflected sky and refracted water color:
532
+ ```glsl
533
+ float fresnel = pow(1.0 - dot(n, -eye), 3.0);
534
+ vec3 color = mix(refracted, reflected, fresnel);
535
+ ```
536
+
537
+ ### 5. Multi-Layer FBM Compositing
538
+
539
+ Different FBM layers with different parameters control different properties:
540
+ - **Shape layer**: low-frequency standard FBM controls cloud shape
541
+ - **Ridged layer**: mid-frequency ridged FBM adds edge detail
542
+ - **Color layer**: high-frequency FBM controls cloud interior color variation
543
+ - **Combination**: `f *= r + f;` shape * ridged produces sharp edges
544
+
545
+ ### 6. FBM + Volumetric Lighting (Directional Derivative)
546
+
547
+ In volume rendering, the density difference along the light direction approximates lighting:
548
+ ```glsl
549
+ float shadow = clamp((density_here - density_toward_sun) / scale, 0.0, 1.0);
550
+ vec3 lit_color = mix(shadow_color, light_color, shadow);
551
+ ```