Sprite に貼り付けた画像に白黒のエフェクトをかけてみる。
プロジェクト一式はgithubのココ。
Effectでできること
- Spriteで表示する画像にGLSLっぽい言語でエフェクトをかけられる
- バーテックスシェーダー(頂点シェーダー)を記述できる
- フラグメントシェーダー(ピクセルシェーダー)を記述できる
プロジェクト構成
- assets/effects/MyEffect
- GLSLを記述するファイル
- assets/materials/MyMaterial
- MaterialはSpriteとEffectをつなぐ
- assets/resources/images/chart
- Spriteに表示する画像ファイル
- assets/scenes/Main
- メインのScene
- assets/scripts/MainController
- TypeScriptを記述するファイル(Main用)
シーン構成
- Canvas
- プロジェクト作成時に最初から配置されているCanvas
- Main Camera
- プロジェクト作成時に最初から配置されているCamera
- MySprite
- Effectを適用するために配置したSprite
ノードを編集する
Spriteノード(名前はMySprite)を作ってSpriteFrameに画像を設定する
Material(名前はMyMaterial)を作ってSpriteに設定する
Effect(名前はMyEffect)を作ってMaterialに設定する(変更後、右上の「Apply」ボタンを押す)
コードを編集する
Effectのコードを編集する(グレースケールにするエフェクト)
編集するのはフラグメントシェーダーのmainだけ(以下抜粋)
void main () {
vec4 o = vec4(1, 1, 1, 1);
#if USE_TEXTURE
CCTexture(texture, v_uv0, o);
#endif
o *= v_color;
vec4 mono = vec4(0.3, 0.59, 0.11, 1);
float gray = dot(o.rgb, mono.rgb);
gl_FragColor = vec4(gray, gray, gray, 1);
}
コメント