@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,571 @@
1
+ # Multi-Pass Buffer Techniques — Detailed Reference
2
+
3
+ This document is a detailed supplement to [SKILL.md](SKILL.md), covering prerequisites, in-depth explanations of each step, complete variant descriptions, performance optimization analysis, and full combination code examples.
4
+
5
+ ## Prerequisites
6
+
7
+ ### GLSL Fundamentals
8
+
9
+ - GLSL basic syntax: `uniform`, `varying`, `sampler2D`
10
+ - ShaderToy execution model: `iChannel0-3` texture inputs, `iResolution`, `iTime`, `iFrame`, `iMouse`
11
+ - Difference between `texture()` and `texelFetch()`:
12
+ - `texture()` performs interpolated sampling (bilinear filtering), suitable for continuous field sampling
13
+ - `texelFetch()` reads a specific texel exactly, without interpolation, suitable for data storage reads
14
+ - `textureLod()` is used for explicit MIP level sampling, avoiding the blur caused by automatic MIP selection
15
+ - Buffer A/B/C/D concept in ShaderToy: each buffer is an independent render pass that outputs to a corresponding texture, which can be read by other passes or itself via iChannel
16
+
17
+ ### Basic Math
18
+
19
+ - Basic vector math and matrix transforms
20
+ - Finite difference method: using neighboring pixels to approximate gradients and the Laplacian operator
21
+ - Iterative mapping: the concept of `x(n+1) = f(x(n))`, the mathematical basis for self-feedback
22
+
23
+ ## Implementation Steps
24
+
25
+ ### Step 1: Establish a Minimal Self-Feedback Loop
26
+
27
+ **What**: Create a Buffer that reads its own previous frame output, adds new content, and outputs the result. The Image pass simply displays the Buffer result.
28
+
29
+ **Why**: This is the cornerstone of all multi-pass techniques. Once you understand self-feedback loops, fluid simulation, temporal accumulation, etc. are all extensions of this foundation. An initialization guard (`iFrame == 0` or `iFrame < N`) prevents reading uninitialized data.
30
+
31
+ **iChannel Binding**: Buffer A's iChannel0 → Buffer A (self-feedback); Image's iChannel0 → Buffer A
32
+
33
+ **Key Points**:
34
+ - `exp(-33.0 / iResolution.y)` controls the decay rate; higher values produce faster decay
35
+ - The `fragCoord + vec2(1.0, sin(iTime))` offset creates motion effects
36
+ - The `iFrame < 4` guard ensures stable initial values for the first few frames
37
+
38
+ ### Step 2: Implement Self-Advection
39
+
40
+ **What**: Building on self-feedback, interpret the buffer values as a velocity field and implement self-advection — each pixel offsets its sampling position based on the local velocity.
41
+
42
+ **Why**: Self-advection is the core of all Eulerian grid fluid simulations. By accumulating rotational information across multiple scales through rotational sampling, rich vortex structures can be produced without a complete Navier-Stokes solver.
43
+
44
+ **Parameter Tuning**:
45
+ - `ROT_NUM` (rotation sample count): Affects the sampling accuracy of the rotation field; 5 is a good balance
46
+ - `SCALE_NUM` (number of scale levels): Affects the detail level of vortices; 20 levels produce rich multi-scale structures
47
+ - `bbMax = 0.7 * iResolution.y`: Adaptive loop termination threshold
48
+
49
+ **Mathematical Principles**:
50
+ - The `getRot` function samples the velocity field at ROT_NUM equally spaced angular directions around a given position
51
+ - Computes the rotational component via `dot(velocity - 0.5, perpendicular)`
52
+ - The multi-scale loop `b *= 2.0` progressively enlarges the sampling radius, capturing vortices at different scales
53
+
54
+ ### Step 3: Navier-Stokes Fluid Solver
55
+
56
+ **What**: Implement velocity field solving based on the paper "Simple and fast fluids" (Guay, Colin, Egli, 2011), including advection, viscous forces, and vorticity confinement.
57
+
58
+ **Why**: More physically accurate than pure rotational self-advection, supporting low-viscosity fluid simulation (e.g., smoke, fire). Vorticity is stored in the alpha channel to avoid extra buffer overhead.
59
+
60
+ **Complete `solveFluid` Function Breakdown**:
61
+
62
+ ```glsl
63
+ vec4 solveFluid(sampler2D smp, vec2 uv, vec2 w, float time, vec3 mouse, vec3 lastMouse) {
64
+ const float K = 0.2; // Pressure coefficient: controls the strength of the incompressibility constraint
65
+ const float v = 0.55; // Viscosity coefficient: high value = viscous fluid, low value = thin fluid
66
+
67
+ // Read four neighboring pixels (basis for central differencing)
68
+ vec4 data = textureLod(smp, uv, 0.0);
69
+ vec4 tr = textureLod(smp, uv + vec2(w.x, 0), 0.0);
70
+ vec4 tl = textureLod(smp, uv - vec2(w.x, 0), 0.0);
71
+ vec4 tu = textureLod(smp, uv + vec2(0, w.y), 0.0);
72
+ vec4 td = textureLod(smp, uv - vec2(0, w.y), 0.0);
73
+
74
+ // Density and velocity gradients (central differencing)
75
+ vec3 dx = (tr.xyz - tl.xyz) * 0.5; // x-direction gradient
76
+ vec3 dy = (tu.xyz - td.xyz) * 0.5; // y-direction gradient
77
+ vec2 densDif = vec2(dx.z, dy.z); // Density gradient
78
+
79
+ // Density update: continuity equation ∂ρ/∂t + ∇·(ρv) = 0
80
+ data.z -= DT * dot(vec3(densDif, dx.x + dy.y), data.xyz);
81
+
82
+ // Viscous force (Laplacian operator): μ∇²v
83
+ // Discrete Laplacian = up + down + left + right - 4*center
84
+ vec2 laplacian = tu.xy + td.xy + tr.xy + tl.xy - 4.0 * data.xy;
85
+ vec2 viscForce = vec2(v) * laplacian;
86
+
87
+ // Advection: Semi-Lagrangian backtrace method
88
+ // Trace backward from the current position along the reverse velocity direction, sample previous step's value
89
+ data.xyw = textureLod(smp, uv - DT * data.xy * w, 0.0).xyw;
90
+
91
+ // External forces (mouse interaction)
92
+ vec2 newForce = vec2(0);
93
+ if (mouse.z > 1.0 && lastMouse.z > 1.0) {
94
+ // Mouse movement velocity as force direction
95
+ vec2 vv = clamp((mouse.xy * w - lastMouse.xy * w) * 400.0, -6.0, 6.0);
96
+ // Force magnitude inversely proportional to distance from mouse (similar to a point charge field)
97
+ newForce += 0.001 / (dot(uv - mouse.xy * w, uv - mouse.xy * w) + 0.001) * vv;
98
+ }
99
+
100
+ // Velocity update: v += dt * (viscous force - pressure gradient + external forces)
101
+ data.xy += DT * (viscForce - K / DT * densDif + newForce);
102
+ // Linear decay: simulates energy dissipation
103
+ data.xy = max(vec2(0), abs(data.xy) - 1e-4) * sign(data.xy);
104
+
105
+ // Vorticity Confinement
106
+ // Compute curl = ∂vy/∂x - ∂vx/∂y
107
+ data.w = (tr.y - tl.y - tu.x + td.x);
108
+ // Vorticity gradient direction
109
+ vec2 vort = vec2(abs(tu.w) - abs(td.w), abs(tl.w) - abs(tr.w));
110
+ // Normalize then multiply by vorticity value to produce a force that enhances vortices
111
+ vort *= VORTICITY_AMOUNT / length(vort + 1e-9) * data.w;
112
+ data.xy += vort;
113
+
114
+ // Top/bottom boundaries: soft decay to avoid hard edges
115
+ data.y *= smoothstep(0.5, 0.48, abs(uv.y - 0.5));
116
+ // Numerical stability: clamp extreme values
117
+ data = clamp(data, vec4(vec2(-10), 0.5, -10.0), vec4(vec2(10), 3.0, 10.0));
118
+
119
+ return data;
120
+ }
121
+ ```
122
+
123
+ **RGBA Channel Packing Strategy**:
124
+ - `xy` = velocity components (vx, vy)
125
+ - `z` = density
126
+ - `w` = vorticity (curl)
127
+
128
+ A single vec4 carries the complete fluid state without needing extra buffers.
129
+
130
+ ### Step 4: Chained Buffers for Accelerated Simulation
131
+
132
+ **What**: Execute the same simulation code in a chain through Buffer A → B → C, completing multiple simulation sub-steps per frame.
133
+
134
+ **Why**: Each ShaderToy buffer executes only once per frame. By chaining identical code (A reads itself → B reads A → C reads B), three iterations are completed in a single frame, significantly increasing simulation speed without adding buffer count. Use the Common tab to avoid code duplication.
135
+
136
+ **iChannel Binding**:
137
+ - Buffer A: iChannel0 → Buffer C (reads previous frame's final result)
138
+ - Buffer B: iChannel0 → Buffer A (reads current frame's first step result)
139
+ - Buffer C: iChannel0 → Buffer B (reads current frame's second step result)
140
+
141
+ **Mouse State Inter-Frame Transfer**:
142
+ - `if (fragCoord.y < 1.0) data = iMouse;` writes the current frame's mouse state into the first row of pixels
143
+ - `texelFetch(iChannel0, ivec2(0, 0), 0)` reads the previous frame's mouse state in the next frame
144
+ - The delta between two frames' mouse positions gives mouse velocity, used to calculate the direction and magnitude of applied forces
145
+
146
+ ### Step 5: Separable Gaussian Blur Pipeline
147
+
148
+ **What**: Use two Buffers to implement horizontal and vertical separable Gaussian blur.
149
+
150
+ **Why**: A 2D Gaussian kernel can be separated into the product of two 1D kernels. An NxN kernel drops from N² samples to 2N. This is the standard implementation for Bloom, the diffusion term in reaction-diffusion, and various post-processing blurs.
151
+
152
+ **iChannel Binding**: Buffer B: iChannel0 → Buffer A (source); Buffer C: iChannel0 → Buffer B (horizontal blur result)
153
+
154
+ **Vertical blur complete code** (horizontal version in SKILL.md; vertical version symmetrically replaces the y-axis):
155
+ ```glsl
156
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
157
+ vec2 pixelSize = 1.0 / iResolution.xy;
158
+ vec2 uv = fragCoord * pixelSize;
159
+
160
+ float v = pixelSize.y;
161
+ vec4 sum = vec4(0.0);
162
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y - 4.0*v))) * 0.05;
163
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y - 3.0*v))) * 0.09;
164
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y - 2.0*v))) * 0.12;
165
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y - 1.0*v))) * 0.15;
166
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y ))) * 0.16;
167
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y + 1.0*v))) * 0.15;
168
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y + 2.0*v))) * 0.12;
169
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y + 3.0*v))) * 0.09;
170
+ sum += texture(iChannel0, fract(vec2(uv.x, uv.y + 4.0*v))) * 0.05;
171
+
172
+ fragColor = vec4(sum.xyz / 0.98, 1.0);
173
+ }
174
+ ```
175
+
176
+ **9-tap Weight Explanation**:
177
+ - Weights [0.05, 0.09, 0.12, 0.15, 0.16, 0.15, 0.12, 0.09, 0.05] approximate a Gaussian distribution with sigma≈2.0
178
+ - Total sum is 0.98, divided by 0.98 for normalization
179
+ - `fract()` implements wrap addressing
180
+
181
+ ### Step 6: Structured State Storage (Texel-Addressed Registers)
182
+
183
+ **What**: Use specific pixels in a Buffer as named registers to store non-image data (positions, velocities, scores, etc.).
184
+
185
+ **Why**: GPUs have no global variables. By assigning semantic meaning to specific texel positions, arbitrary structured state can be persisted in a buffer. This enables complete game logic, particle system state, etc. to be implemented in shaders.
186
+
187
+ **Design Pattern Details**:
188
+
189
+ 1. **Address Constants**: Use `const ivec2` to define the texel address for each state variable
190
+ 2. **Load Function**: `texelFetch(iChannel0, addr, 0)` for exact reads (no interpolation)
191
+ 3. **Store Function**: Use conditional assignment `fragColor = (px == addr) ? val : fragColor`, ensuring each pixel only writes data belonging to its own address
192
+ 4. **Region Storage**: `ivec4 rect` defines rectangular regions for grid-like data (e.g., brick matrices)
193
+ 5. **Discard outside data region**: `if (fragCoord.x > 14.0 || fragCoord.y > 14.0) discard;` skips unnecessary computation
194
+
195
+ **Notes**:
196
+ - `ivec2(fragCoord - 0.5)` ensures correct integer texel coordinates (fragCoord's center offset)
197
+ - Initialization must set all state values when `iFrame == 0`
198
+ - Default behavior `fragColor = loadValue(px)` keeps unmodified state unchanged
199
+
200
+ ### Step 7: Inter-Frame Mouse State Tracking
201
+
202
+ **What**: Store the mouse position in specific pixels of a Buffer, and compute mouse movement delta by reading the previous frame's value.
203
+
204
+ **Why**: ShaderToy does not directly provide mouse velocity. Storing the current frame's `iMouse` in a fixed pixel allows calculating the delta in the next frame. This is critical for fluid interaction — mouse velocity is needed to apply forces.
205
+
206
+ **Comparison of Two Methods**:
207
+
208
+ | Feature | Method 1 (First Row Pixel) | Method 2 (Fixed UV Region) |
209
+ |---------|---------------------------|---------------------------|
210
+ | Source | Chimera's Breath | Reaction-Diffusion |
211
+ | Storage Location | `fragCoord.y < 1.0` | Fixed UV coordinate |
212
+ | Read Method | `texelFetch(ch, ivec2(0,0), 0)` | `texture(ch, vec2(7.5/8, 2.5/8))` |
213
+ | Advantage | Simple, suitable for fluids | Resolution-independent |
214
+ | Disadvantage | Occupies the first row of pixels | Requires extra buffer channel |
215
+
216
+ ## Variant Details
217
+
218
+ ### Variant 1: Temporal Accumulation Anti-Aliasing (TAA)
219
+
220
+ **Difference from basic version**: The Buffer does not perform physics simulation, but instead renders a jittered image and blends it with history frames to achieve supersampling. Uses YCoCg color space neighborhood clamping to prevent ghosting.
221
+
222
+ **How It Works**:
223
+ 1. Buffer A renders the scene with sub-pixel level random jitter
224
+ 2. New frames are blended with history frames at a 10:90 ratio, accumulating supersampling over time
225
+ 3. The TAA buffer performs YCoCg neighborhood clamping: constraining the history frame color to the statistical range of the current frame's 3x3 neighborhood
226
+ 4. A 0.75 sigma clamping range balances ghost removal and detail preservation
227
+
228
+ **Complete TAA Flow**:
229
+ ```
230
+ Buffer A (render+jitter) → Buffer B (motion vectors, optional) → Buffer C (TAA blend) → Image
231
+ ```
232
+
233
+ ### Variant 2: Deferred Rendering G-Buffer Pipeline
234
+
235
+ **Difference from basic version**: Buffers do not use self-feedback, but instead process in stages within a single frame: geometry → edge detection → post-processing.
236
+
237
+ **G-Buffer Encoding Scheme**:
238
+ - `col.xy`: View-space normal xy components (multiplied by camMat to convert to screen space)
239
+ - `col.z`: Linear depth (normalized to [0,1])
240
+ - `col.w`: Diffuse lighting + shadow information
241
+
242
+ **Edge Detection Principle**:
243
+ - The `checkSame` function compares normal and depth differences between adjacent pixels
244
+ - `Sensitivity.x` controls normal edge sensitivity
245
+ - `Sensitivity.y` controls depth edge sensitivity
246
+ - Threshold 0.1 determines the edge detection criterion
247
+
248
+ ### Variant 3: HDR Bloom Post-Processing Pipeline
249
+
250
+ **Difference from basic version**: Uses Buffers to build a MIP pyramid, achieving wide-range glow through multiple levels of downsampling and blur.
251
+
252
+ **MIP Pyramid Packing Strategy**:
253
+ - All MIP levels are packed into a single texture
254
+ - `CalcOffset` computes the offset position of each level within the texture
255
+ - Each level is half the size, with padding to prevent inter-level leakage
256
+
257
+ **Complete Bloom Pipeline**:
258
+ ```
259
+ Buffer A (scene render) → Buffer B (MIP pyramid) → Buffer C (horizontal blur) → Buffer D (vertical blur) → Image (compositing)
260
+ ```
261
+
262
+ **Tone Mapping**:
263
+ ```glsl
264
+ // Reinhard tone mapping
265
+ color = pow(color, vec3(1.5)); // Gamma preprocessing
266
+ color = color / (1.0 + color); // Reinhard compression
267
+ ```
268
+
269
+ ### Variant 4: Reaction-Diffusion System
270
+
271
+ **Difference from basic version**: Simulates chemical reaction-diffusion (e.g., Gray-Scott model). Diffusion is implemented via separable blur, and the reaction term is computed in the main buffer.
272
+
273
+ **Gray-Scott Equations**:
274
+ - `∂u/∂t = Du∇²u - uv² + F(1-u)` — Diffusion and reaction of chemical substance u
275
+ - `∂v/∂t = Dv∇²v + uv² - (F+k)v` — Diffusion and reaction of chemical substance v
276
+ - `Du`, `Dv` are diffusion coefficients, `F` is the feed rate, `k` is the kill rate
277
+
278
+ **Implementation Strategy**:
279
+ - The diffusion term is implemented via separable blur buffers (reusing the blur pipeline from Step 5)
280
+ - The reaction term is computed in the main buffer
281
+ - The offset of `uv_red` implements diffusion expansion
282
+ - Random noise decay prevents pattern stagnation
283
+
284
+ ### Variant 5: Multi-Scale MIP Fluid
285
+
286
+ **Difference from basic version**: Uses `textureLod` to explicitly sample different MIP levels, achieving O(n) complexity multi-scale computation (turbulence, vorticity confinement, Poisson solving), with each physical quantity in its own buffer.
287
+
288
+ **Core Advantage**:
289
+ - Traditional multi-scale computation requires O(N²) samples (sampling N neighbors at each scale)
290
+ - MIP sampling leverages hardware automatic averaging; a single `textureLod` at high MIP levels is equivalent to a large-range mean
291
+ - Total complexity drops to O(NUM_SCALES × 9) (3x3 neighborhood per scale)
292
+
293
+ **Weight Function Choices**:
294
+ - `1.0/float(i+1)`: Logarithmic decay, reduces large-scale influence
295
+ - `1.0/float(1<<i)`: Exponential decay, rapidly suppresses large scales
296
+ - Constant: Equal weight for all scales
297
+
298
+ ## In-Depth Performance Optimization
299
+
300
+ ### 1. Reduce Texture Samples
301
+
302
+ **Separable Blur**:
303
+ - Principle: The 2D Gaussian function G(x,y) = G(x) × G(y) can be separated into two 1D convolutions
304
+ - An NxN kernel drops from N² to 2N samples
305
+ - 9-tap example: 81 → 18 samples
306
+
307
+ **Bilinear Tap Trick**:
308
+ ```glsl
309
+ // Standard 9-tap: requires 9 samples
310
+ // Bilinear optimization: achieves equivalent results with 5 samples using hardware interpolation
311
+ // Key: place sample points between two texels, GPU hardware automatically computes weighted average
312
+ float offset1 = 1.0 + weight2 / (weight1 + weight2); // Offset encodes weight ratio
313
+ vec4 s1 = texture(smp, uv + vec2(offset1, 0) * texelSize);
314
+ // s1 is automatically the weighted average of texel[1] and texel[2]
315
+ ```
316
+
317
+ **MIP Sampling Replaces Large Kernels**:
318
+ - `textureLod(smp, uv, 3.0)` samples MIP level 3, equivalent to an 8×8 area mean
319
+ - A single sample replaces 64 samples
320
+ - Suitable for coarse-scale approximation in multi-scale computation
321
+
322
+ ### 2. Limit Computation Region
323
+
324
+ **Data Region Discard**:
325
+ ```glsl
326
+ // In a state storage shader, only the first 14×14 pixels store data
327
+ // Remaining pixels are discarded, GPU skips subsequent computation
328
+ if (fragCoord.x > 14.0 || fragCoord.y > 14.0) discard;
329
+ ```
330
+
331
+ **Soft Boundaries**:
332
+ ```glsl
333
+ // Use smoothstep instead of if-statements
334
+ // Avoids branch divergence (warp divergence), more efficient on GPU
335
+ data.y *= smoothstep(0.5, 0.48, abs(uv.y - 0.5));
336
+ // Smoothly decays to 0 in the y=0.48~0.52 range
337
+ ```
338
+
339
+ ### 3. Reduce Buffer Count
340
+
341
+ **RGBA Channel Packing**:
342
+ | Channel | Fluid Simulation | G-Buffer | Particle System |
343
+ |---------|-----------------|----------|----------------|
344
+ | R | Velocity x | Normal x | Position x |
345
+ | G | Velocity y | Normal y | Position y |
346
+ | B | Density | Depth | Lifetime |
347
+ | A | Vorticity | Diffuse | Type ID |
348
+
349
+ **Chained Sub-Steps**:
350
+ - 3 buffers running identical code = 3 iterations per frame
351
+ - Equivalent to 3x time step, but more stable (each step is still a small step)
352
+ - Code is shared via the Common tab, zero maintenance cost
353
+
354
+ ### 4. Reduce Iteration/Sample Count
355
+
356
+ **Adaptive Loop Termination**:
357
+ ```glsl
358
+ // In multi-scale sampling, exit early when the sampling radius exceeds the effective range
359
+ float bbMax = 0.7 * iResolution.y;
360
+ bbMax *= bbMax;
361
+ for (int l = 0; l < SCALE_NUM; l++) {
362
+ if (dot(b, b) > bbMax) break; // Beyond screen range, no need to continue
363
+ // ...
364
+ b *= 2.0;
365
+ }
366
+ ```
367
+
368
+ **MIP Level Count Adjustment**:
369
+ - `TURBULENCE_SCALES = 11`: Full multi-scale, highest quality
370
+ - `TURBULENCE_SCALES = 7`: Removes the largest scales, minimal quality loss
371
+ - `TURBULENCE_SCALES = 5`: Noticeable speedup, suitable for mobile
372
+
373
+ ### 5. Initialization Strategy
374
+
375
+ **Progressive Initialization**:
376
+ ```glsl
377
+ // Output stable initial values for the first 20 frames
378
+ if (iFrame < 20) data = vec4(0.5, 0, 0, 0);
379
+ ```
380
+ - Why not `iFrame == 0`? Because some buffers depend on the output of other buffers
381
+ - 20 frames ensures all buffers complete initialization propagation
382
+
383
+ **Tiny Noise Initialization**:
384
+ ```glsl
385
+ if (iFrame == 0) fragColor = 1e-6 * noise;
386
+ ```
387
+ - Avoids exact zero values causing `0/0` or `normalize(vec2(0))` problems
388
+ - Tiny noise breaks symmetry, allowing vortices to develop naturally
389
+
390
+ ## Combination Examples with Complete Code
391
+
392
+ ### 1. Fluid Simulation + Lighting
393
+
394
+ ```glsl
395
+ // Image: Compute gradient from fluid buffer as normal, apply Phong lighting
396
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
397
+ vec2 uv = fragCoord / iResolution.xy;
398
+ float delta = 1.0 / iResolution.y;
399
+
400
+ // Compute fluid surface gradient
401
+ float valC = getVal(uv);
402
+ vec2 grad = vec2(
403
+ getVal(uv + vec2(delta, 0)) - getVal(uv - vec2(delta, 0)),
404
+ getVal(uv + vec2(0, delta)) - getVal(uv - vec2(0, delta))
405
+ ) / delta;
406
+
407
+ // Build normal (z=150 controls surface flatness)
408
+ vec3 normal = normalize(vec3(grad, 150.0));
409
+
410
+ // Lighting
411
+ vec3 lightDir = normalize(vec3(-1.0, -1.0, 2.0));
412
+ vec3 viewDir = vec3(0, 0, 1);
413
+
414
+ float diff = clamp(dot(normal, lightDir), 0.5, 1.0);
415
+ float spec = pow(clamp(dot(reflect(lightDir, normal), viewDir), 0.0, 1.0), 36.0);
416
+
417
+ vec3 baseColor = vec3(0.2, 0.4, 0.8); // Water surface color
418
+ fragColor = vec4(baseColor * diff + vec3(1.0) * spec * 0.5, 1.0);
419
+ }
420
+ ```
421
+
422
+ ### 2. Fluid Simulation + Color Advection
423
+
424
+ ```glsl
425
+ // Color Buffer: Track a color field, advected by the velocity field
426
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
427
+ vec2 uv = fragCoord / iResolution.xy;
428
+ vec2 w = 1.0 / iResolution.xy;
429
+ float dt = 0.15;
430
+ float scale = 3.0;
431
+
432
+ // Read velocity field
433
+ vec2 velocity = textureLod(iChannel0, uv, 0.0).xy;
434
+
435
+ // Color advection: sample own previous frame in the reverse velocity direction
436
+ vec4 col = textureLod(iChannel1, uv - dt * velocity * w * scale, 0.0);
437
+
438
+ // Inject color at the emission point
439
+ vec2 emitPos = vec2(0.5, 0.5);
440
+ float dist = length(uv - emitPos);
441
+ float emitterStrength = 0.0025;
442
+ float epsilon = 0.0005;
443
+ col += emitterStrength / (epsilon + pow(dist, 1.75)) * dt * 0.12 * palette(iTime * 0.05);
444
+
445
+ // Color decay
446
+ float decay = 0.004;
447
+ col = max(col - (0.0001 + col * decay) * 0.5, 0.0);
448
+ col = clamp(col, 0.0, 5.0);
449
+
450
+ fragColor = col;
451
+ }
452
+ ```
453
+
454
+ ### 3. Scene Rendering + Bloom + TAA Post-Processing Chain
455
+
456
+ Four-Buffer pipeline:
457
+ - **Buffer A**: Scene rendering (with sub-pixel jitter for TAA)
458
+ - **Buffer B**: Brightness extraction + downsampling to build bloom pyramid
459
+ - **Buffer C/D**: Separable Gaussian blur
460
+ - **Image**: Bloom compositing + tone mapping + chromatic aberration + vignette
461
+
462
+ ```glsl
463
+ // Image: Final compositing
464
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
465
+ vec2 uv = fragCoord / iResolution.xy;
466
+
467
+ // Original scene
468
+ vec3 scene = texture(iChannel0, uv).rgb;
469
+
470
+ // Multi-level bloom compositing
471
+ vec3 bloom = vec3(0);
472
+ bloom += Grab(uv, 1.0, CalcOffset(0.0)).rgb * 1.0;
473
+ bloom += Grab(uv, 2.0, CalcOffset(1.0)).rgb * 1.5;
474
+ bloom += Grab(uv, 4.0, CalcOffset(2.0)).rgb * 2.0;
475
+ bloom += Grab(uv, 8.0, CalcOffset(3.0)).rgb * 3.0;
476
+
477
+ // Compositing
478
+ vec3 color = scene + bloom * 0.08;
479
+
480
+ // Filmic tone mapping
481
+ color = pow(color, vec3(1.5));
482
+ color = color / (1.0 + color);
483
+
484
+ // Chromatic Aberration
485
+ float ca = 0.002;
486
+ color.r = texture(iChannel0, uv + vec2(ca, 0)).r;
487
+ color.b = texture(iChannel0, uv - vec2(ca, 0)).b;
488
+
489
+ // Vignette
490
+ float vignette = 1.0 - dot(uv - 0.5, uv - 0.5) * 0.5;
491
+ color *= vignette;
492
+
493
+ fragColor = vec4(color, 1.0);
494
+ }
495
+ ```
496
+
497
+ ### 4. G-Buffer + Screen-Space Effects
498
+
499
+ Two-Buffer pipeline, no temporal feedback:
500
+ - **Buffer A**: Output normals + depth + diffuse to G-Buffer
501
+ - **Buffer B**: Screen-space edge detection / SSAO / SSR
502
+ - **Image**: Stylized compositing (e.g., hand-drawn style, noise distortion)
503
+
504
+ ```glsl
505
+ // Buffer B: Screen-space edge detection
506
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
507
+ vec2 uv = fragCoord / iResolution.xy;
508
+ vec2 offset = 1.0 / iResolution.xy;
509
+
510
+ vec4 center = texture(iChannel0, uv);
511
+
512
+ // Roberts Cross edge detection
513
+ vec4 tl = texture(iChannel0, uv + vec2(-offset.x, offset.y));
514
+ vec4 tr = texture(iChannel0, uv + vec2(offset.x, offset.y));
515
+ vec4 bl = texture(iChannel0, uv + vec2(-offset.x, -offset.y));
516
+ vec4 br = texture(iChannel0, uv + vec2(offset.x, -offset.y));
517
+
518
+ float edge = checkSame(center, tl) * checkSame(center, tr) *
519
+ checkSame(center, bl) * checkSame(center, br);
520
+
521
+ fragColor = vec4(edge, center.w, center.z, 1.0);
522
+ }
523
+ ```
524
+
525
+ ### 5. State Storage + Visualization Separation
526
+
527
+ Standard pattern for games/particle systems. Logic and rendering are fully separated:
528
+ - **Buffer A**: Pure logic computation, state stored in fixed texel positions
529
+ - **Image**: Pure rendering, reads state via `texelFetch`, draws visuals using distance fields/rasterization
530
+
531
+ ```glsl
532
+ // Image: Read game state from Buffer A and render
533
+ void mainImage(out vec4 fragColor, in vec2 fragCoord) {
534
+ vec2 uv = fragCoord / iResolution.xy;
535
+ vec2 aspect = vec2(iResolution.x / iResolution.y, 1.0);
536
+
537
+ // Read ball state
538
+ vec4 ballPV = texelFetch(iChannel0, ivec2(0, 0), 0);
539
+ vec2 ballPos = ballPV.xy;
540
+
541
+ // Read paddle position
542
+ float paddleX = texelFetch(iChannel0, ivec2(1, 0), 0).x;
543
+
544
+ // Draw ball (distance field)
545
+ float ballDist = length((uv - ballPos * 0.5 - 0.5) * aspect);
546
+ vec3 ballColor = vec3(1.0, 0.8, 0.2) * smoothstep(0.02, 0.015, ballDist);
547
+
548
+ // Draw paddle
549
+ vec2 paddleCenter = vec2(paddleX * 0.5 + 0.5, 0.05);
550
+ vec2 paddleSize = vec2(0.08, 0.01);
551
+ vec2 d = abs((uv - paddleCenter) * aspect) - paddleSize;
552
+ float paddleDist = length(max(d, 0.0));
553
+ vec3 paddleColor = vec3(0.2, 0.6, 1.0) * smoothstep(0.005, 0.0, paddleDist);
554
+
555
+ // Read and draw brick grid
556
+ vec3 brickColor = vec3(0);
557
+ for (int y = 1; y <= 12; y++) {
558
+ for (int x = 0; x <= 13; x++) {
559
+ float alive = texelFetch(iChannel0, ivec2(x, y), 0).x;
560
+ if (alive > 0.5) {
561
+ vec2 brickCenter = vec2(float(x) / 14.0 + 0.036, float(y) / 14.0 + 0.036);
562
+ vec2 bd = abs((uv - brickCenter) * aspect) - vec2(0.03, 0.015);
563
+ float brickDist = length(max(bd, 0.0));
564
+ brickColor += vec3(0.8, 0.3, 0.5) * smoothstep(0.003, 0.0, brickDist);
565
+ }
566
+ }
567
+ }
568
+
569
+ fragColor = vec4(ballColor + paddleColor + brickColor, 1.0);
570
+ }
571
+ ```