デアゴスティーニ商法作業管理での87日目作業

今日の作業は「テクスチャからテクスチャへ位置変更してコピー」です。

昨日はウィンドウサイズを変更してもライフパターンが保持されるようにしましたが、ウィンドウの左下がベースなっていました。これを左上基準に変更します。

修正したシェーダーは以下のようになりました。

const LIFE_FS_COPY = '\
precision highp float;\
\
uniform sampler2D uPreTextureCoord;\
uniform ivec2 uFromSize;\
uniform ivec2 uToSize;\
\
void main() {\
  float dotX = 1.0 / float(uFromSize.x);\
  float dotY = 1.0 / float(uFromSize.y);\
  float preTexX = gl_FragCoord.x * dotX;\
  float preTexY = gl_FragCoord.y * dotY + 
  float(uFromSize.y - uToSize.y) * dotY;\
  if (0.0 <= preTexX && preTexX < 1.0 
   && 0.0 <= preTexY && preTexY < 1.0) {\
    gl_FragColor = 
     texture2D(uPreTextureCoord, vec2(preTexX, preTexY));\
  } else {\
    gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\
  }\
}';

変更前と変更後のテクスチャサイズの差分 (uFromSize.y - uToSize.y) をpreTexY 変数に加算して調整しています。

また、サイズ変更前のテクスチャ座標を示すpreTexX と preTexY が 0〜1未満の範囲外ならば描画先を黒色にするよう変更しました。

修正後のウィンドウサイズ変更結果は次の通りです。

ウィンドウサイズを大きくすると・・・

はい、問題なく左上基準になりました。また、昨日の端のライフパターンが伸びる現象も解決しました。よかった!

以上です!

本家デアゴGTR-NISMO箱積状況:3箱 (33,34,35号)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です