カスタムシェーダーを使ってクロス表示を行った図

deck.gl でカスタムシェーダーを使う

概要

Deck.glでは開発者がシェーダーをカスタマイズする方法がいくつか用意されています。

ここではLayerExtensionを使って独自のシェーダーコードを追加する方法を紹介します。

サンプル

LayerExtensionを用いてScatterplotLayerに、オリジナルのフラグメントシェーダーを挿入し、出力結果をクロス(十字)に変換します。

解説

Deck.glのレイヤークラスには、あらかじめレイヤーを拡張するためのextensionsプロパティが用意されています。

extensionsの機能の一つとして、deck.glが生成するシェーダーをフックしてオリジナルなシェーダーコードを注入(inject)することができます。

上記のコードでは、チェックボックスにチェックが入るとtrueの値が親レイヤーのchangeClossプロパティを経由してフラグメントシェーダーにuniform変数として渡されます。

その後、シェーダーをフックするカスタムコード「fs:#main-end」に入力されたコードがシェーダーのmain関数の最後に注入され実行されます。

コードを注入する場所はあらかじめいくつか用意されています。詳しくはリンク先ページの「Standard Shader Hooks」の章を参照してください。