GLESAdaptor¶
OpenGL ES の描画コンテキストを保持できるアダプター (EGLベース)
描画に使うオブジェクトは egl を使ってコンテキスト処理する前提になります
メンバー一覧¶
コンストラクタ¶
プロパティ¶
メソッド¶
- setScreenSize
- makeCurrent
- capture
- copyLayer
- drawLayer
- beginEffect
- endEffect
- setClipRect
- clearClipRect
- beginMaskClip
- endMaskClip
- beginStencilClip
- endStencilClip
GLESAdaptor¶
コンストラクタ
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
window |
|
対象ウインドウ |
解説
コンストラクタ
screenWidth¶
プロパティ \ アクセス: r/w
解説
スクリーン横幅
screenHeihgt¶
プロパティ \ アクセス: r/w
解説
スクリーン縦幅
blendMode¶
プロパティ \ アクセス: r/w
解説
ブレンドモード (tTVPBlendMode 相当: 0=Disable,1=Opaque,2=Alpha,3=Add,...)
setScreenSize¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
width |
|
|
height |
|
解説
スクリーンサイズの設定
makeCurrent¶
メソッド
解説
OpenGL コンテキスト設定
capture¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
layer |
|
結果格納先レイヤ |
callback |
|
処理関数 function(width, height, param) このオブジェクトのコンテキストで実行されます |
param |
|
追加パラメータ |
color |
|
塗りつぶし色 |
解説
OpenGL描画処理実行
copyLayer¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
layer |
|
レイヤ または GLESTexture |
left |
|
左位置 |
top |
|
上位置 |
解説
レイヤのコピー
drawLayer¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
layer |
|
レイヤ または GLESTexture |
a |
|
|
b |
|
|
c |
|
|
d |
|
|
tx |
|
|
ty |
|
|
opacity |
|
不透明度 0~255 (省略時 255) |
解説
レイヤの描画
beginEffect¶
メソッド
解説
エフェクト捕捉の開始
以降の描画は中間フレームバッファ(透明クリア済み)へ行われる。 対応する endEffect() を必ず呼ぶこと。
===================================================================== ポストエフェクト (描画後処理) beginEffect() ~ endEffect() で囲んだ描画を中間バッファに捕捉し、 画像加工コマンド列を GPU 上で適用してから直前の描画先へ合成する。 capture() のコールバック内で、モジュール(Live2D / drawLayer 等) の描画ごとに個別のエフェクトを掛けられる。ネスト可。 =====================================================================
endEffect¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
commands |
|
加工コマンドの配列。各要素は辞書で cmd メンバに種別、 残りのメンバにパラメータを持つ。下記「コマンド一覧」参照。 |
opacity |
255 |
合成時の不透明度(0~255、省略時 255)。α に乗算される。 Live2D のように自前描画で opacity を解釈しない モジュールのレイヤ不透明度を反映するのに使う。 加工不要なら commands に空配列を渡せば 「捕捉して opacity 付きで合成するだけ」になる。 例) [ %[ cmd:"grayscale" ], %[ cmd:"gamma", value:1.2 ] ] |
解説
エフェクト適用と合成
直前の beginEffect() 以降に描画された内容へ commands を順に適用し、 現在の blendMode で直前の描画先へ合成する。
setClipRect¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
left |
|
|
top |
|
|
width |
|
|
height |
|
解説
矩形クリップの設定
以降の drawLayer / endEffect / endMaskClip の合成が矩形内に制限される。 描画モジュールが scissor 状態を尊重する場合は直接描画にも効くが、 確実にクリップしたい場合は beginMaskClip/endMaskClip で囲むこと。 --------------------------------------------------------------------- コマンド一覧 (endEffect の commands 配列に並べる) ● 点処理 (連続すると 1 パスに融合される) %[ cmd:"grayscale" ] グレースケール化 Y=(19B+183G+54R)>>8 %[ cmd:"gamma", value:r ] // 全チャンネル一括 %[ cmd:"gamma", rgamma:.., rfloor:.., rceil:.., ggamma:.., gfloor:.., gceil:.., bgamma:.., bfloor:.., bceil:.. ] // チャンネル別 ガンマ補正 out = pow(in/255, 1/gamma)(ceil-floor)+floor (本体 Layer.adjustGamma と同じ。floor 既定 0 / ceil 既定 255) %[ cmd:"light", brightness:b, contrast:c ] 明度 b(-255~255) / コントラスト c(-100~100) %[ cmd:"lut", table:[ ...256要素... ] ] 全チャンネル共通の 256 段ルックアップテーブル %[ cmd:"colorize", hue:h, sat:s, blend:b ] 色相 h(0~255) / 彩度 s(0~255) / 合成率 b(0~1) %[ cmd:"modulate", hue:h, saturation:s, luminance:l ] 色相 h(-180~180) / 彩度 s(-100~100) / 輝度 l(-100~100) %[ cmd:"noise", level:n ] ノイズ付加 n(0~255) %[ cmd:"generateWhiteNoise" ] グレースケールのホワイトノイズ生成 (α は保持) %[ cmd:"overcolor", color:0xAARRGGBB, type:mode, opacity:o ] 指定色での全体塗りつぶし合成 (吉里吉里 fillOperateRect 準拠)。 color の上位8bit(AA) と opacity(0~255,既定255) が合成αになる。 type は吉里吉里の合成モード値 (tTVPBlendOperationMode): 1=Opaque 2=Alpha(既定) 3=Additive 4=Subtractive 5=Multiplicative 8=Dodge 9=Darken 10=Lighten 11=Screen 12=AddAlpha 13=PsNormal 14=PsAdditive 15=PsSubtractive 16=PsMultiplicative 17=PsScreen 18=PsOverlay 19=PsHardLight 20=PsSoftLight 21=PsColorDodge 22=PsColorDodge5 23=PsColorBurn 24=PsLighten 25=PsDarken 26=PsDifference 27=PsDifference5 28=PsExclusion ● 近傍処理 (中間バッファを介して H/V 2 パス) %[ cmd:"boxBlur", area:r, iter:n ] 半径 r の一様ぼかしを n 回 (iter 既定 1) %[ cmd:"gaussianBlur", radius:r ] 半径 r のガウスぼかし ※ noise / blur の最外周 / colorize は CPU 版と完全一致ではなく視覚的同等。 --------------------------------------------------------------------- ===================================================================== クリッピング (AffineLayer の clip / clipImage 相当) 矩形クリップ : setClipRect / clearClipRect。scissor で実現。 画像クリップ : 二方式 mask 方式 : beginMaskClip() ~ endMaskClip() で囲んだ描画を 中間バッファに捕捉し、マスク画像の α を乗算しながら 直前の描画先へ合成する。マスク矩形の外側は α=0。 (CPU 版 Layer.clipAlphaRect の第8引数 0 相当) 描画モジュール (Live2D 等) にも安全に使える。 stencil 方式 : beginStencilClip() ~ endStencilClip()。 マスク α をステンシルに書き込み描画を切り抜く。 α は閾値で2値化される。描画モジュールが自前で ステンシルを使う場合は競合するため drawLayer による単純テクスチャ描画専用。 =====================================================================
clearClipRect¶
メソッド
解説
矩形クリップの解除
beginMaskClip¶
メソッド
解説
マスククリップ捕捉の開始
以降の描画は中間フレームバッファ(透明クリア済み)へ行われる。 対応する endMaskClip() を必ず呼ぶこと。beginEffect() とネスト可。
endMaskClip¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
mask |
|
マスク画像 (GLESTexture または Layer)。void なら素通し合成 (矩形クリップだけを合成時に確実に適用したい場合に使う) |
x |
|
|
y |
|
解説
マスク適用合成
直前の beginMaskClip() 以降に描画された内容へマスク画像の α を 乗算し、現在の blendMode で直前の描画先へ合成する。 マスク矩形の外側は α=0 (完全クリップ)。
beginStencilClip¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
mask |
|
マスク画像 (GLESTexture または Layer) |
x |
|
|
y |
|
|
threshold |
|
クリップを有効とする α 閾値 (1~255、省略不可) |
解説
ステンシルクリップの開始
マスク画像の α が閾値以上の領域をステンシルへ書き込み、 以降の drawLayer をその領域内に切り抜く。
endStencilClip¶
メソッド
解説
ステンシルクリップの終了