技能 shader-programming-glsl
📦

shader-programming-glsl

安全

使用 GLSL 撰寫 GPU 著色器

運用 GPU 著色器建立令人驚豔的視覺效果並最佳化圖形渲染。本指南教授 GLSL 語法、頂點與片段著色器,以及即時圖形的著色器數學。

支援: Claude Codex Code(CC)
🥉 73 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「shader-programming-glsl」。 建立一個以畫面為中心的脈動發光效果的著色器

預期結果:

使用 smoothstep 與基於時間的 sin 函數建立徑向漸層動畫的片段著色器,並從中心到邊緣進行色彩插值

正在使用「shader-programming-glsl」。 我如何最佳化這個執行 100 次迭代的著色器迴圈?

預期結果:

建議減少迭代次數、使用提前終止、在 CPU 上預先計算常數,以及用 step/mix 函數取代分支以獲得更好的 GPU 效能

安全審計

安全
v1 • 2/25/2026

All 33 static analysis findings are false positives. The SKILL.md file is educational documentation about GLSL shader programming. Backtick-quoted text represents GLSL code examples in markdown format, not shell command execution. C2 keywords and system reconnaissance patterns are GLSL built-in variables (gl_Position, gl_FragColor, varying) and shader language syntax. No actual security risks detected.

1
已掃描檔案
122
分析行數
0
發現項
1
審計總數
未發現安全問題
審計者: claude

品質評分

38
架構
100
可維護性
87
內容
50
社群
100
安全
83
規範符合性

你能建構什麼

建立互��視覺效果的前端開發者

為 Three.js 專案建構自訂著色器,包括動畫背景、粒子系統以及網站的後處理效果。

實作自���效果的遊戲開發者

為 Unity 或 Unreal Engine 撰寫著色器,以建立獨特的視覺風格、地形生成及即時光照效果。

探索生成藝術的創意程式設計師

使用 SDF、光線行進及片段著色器技術實驗程序化生成,用於數位藝術裝置。

試試這些提示

基本片段著色器設定
協助我撰寫一個基本的 GLSL 片段著色器,它根據 UV 座標建立色彩漸層,用於 Three.js。
帶有變���的頂點著色器
產生一個頂點著色器,使用時間 uniform 以及 sin/cos 函數對網格套用波浪變形。
光線行進 SDF 場景
建立一個光線行進片段著色器,使用平滑聯集操作結合多個 SDF 形狀(球體與盒子)。
後處理效果
撰寫一個泛光後處理著色器,提取明亮像素、套用高斯模糊,並與原始影像合成。

最佳實務

  • 使用 mix() 進行插值,使用 step()/smoothstep() 處理閾值,而非 if-else 分支
  • ��� CPU 上預先計算常數值並作為 uniforms 傳遞,而非在著色器中計算
  • 將相關資料打包到 vec4 中以最小化記憶體頻寬並充分利用 GPU 向量單元

避免

  • 迴圈內的冗長條件分支會降低 GPU 平行性並導致執行緒分歧
  • 每個片段計算靜態值,而非從 CPU 傳遞預先計算的 uniforms
  • 不必要的精度(mediump 已足夠時使用 highp)會在行動裝置上浪費頻寬與電力

常見問題

頂點著色器與片段著色器有何差異?
頂點著色器��� 3D 頂點位置轉換為 2D 螢幕座標。片段著色器決定每個像素的最終顏色。頂點著色器每個頂點執行一次;片段著色器每個像素執行一次。
為什麼我的著色器顯示黑畫面?
檢查 gl_Position.w 是否等於 1.0、驗證 uniforms 已從主應用程式設定、確保 UV 座標在 0-1 範圍內,並確認著色器編譯無誤。
GLSL 中的 swizzling 是什麼意思?
Swizzling 讓您使用後綴如 .xyzw、.rgba 或 .stpq 來重新排序或選擇向��分量。例如,color.zyx 會反轉 vec3 的 RGB 色彩通道。
我如何將資料從頂點著色器傳遞到片段著色器?
使用 varying 關鍵字。在兩個著色器中宣告 varying,在頂點著色器中指派值,並在片段著色器中讀取。值會在圖元上進行插值。
什麼是光線行進,何時應該使用?
光線行進使用符號距離函式沿著光線步進以渲染 3D 場景。將它用於程序化幾何、有機形狀,以及使用傳統光柵化難以實作的效果。
我如何改善行動裝置上的著色器效能?
盡可能使用 mediump 精度、最小化紋理查詢、減少迴圈迭代、避免動態分支,並在 CPU 上預先計���複雜運算。

開發者詳情

檔案結構

📄 SKILL.md