SpriteStudio / SS5PlayerForCocos2d-x

OPTPiX SpriteStudio 5 で制作したアニメーションデータを Cocos2d-x v3 v2 上で再生するためのプログラムです。
MIT License
8 stars 7 forks source link

cocos2d-x v3 での描画コマンド形式へ対応させた。シェーダーはGLProgramStateで処理させるように変更。カスタムシェー… #45

Closed yutaka-takeda-drecom closed 8 years ago

yutaka-takeda-drecom commented 8 years ago

cocos2d-x v3 での描画コマンド形式へ対応させたものです。 シェーダー管理はGLProgramStateで処理させるように変更。 それとともに、uniformはGLProgramStateのAPIで行った。

カスタムシェーダー側の動作は、サンプルにテスト用データが無かったため、ある程度のチェック(パラメーターがちゃんと渡っているなど)を行ったのみ。 申し訳ないです。

頂点シェーダーに渡しているシェーダーが、MVPマトリクスを計算するようになっていたため、VPマトリクスのみへ修正。

DKAlpha commented 8 years ago

ありがとうございます。内容を確認して反映を検討いたします。

yutaka-takeda-drecom commented 8 years ago

こちらこそありがとうございます

DKAlpha commented 8 years ago

動作を確認してみましたが、1点解決出来ない問題があります。 default 画像の様に複数のカラーブレンドパーツを配置した場合に、u_selectorのみdrawの最終値がすべてに適用される現象があり、こちらが解決方法があると適用できると思うのですが何かご存じでしょうか。

u_alphaはdraw毎の値が適用されているのですが、なぜかu_selectorはそのフレームの全てのdrawで同じ数値の挙動をしてしまいます。

yutaka-takeda-drecom commented 8 years ago

void CustomSprite::changeShaderProgram(bool useCustomShaderProgram) こちらの関数内の 3489行目

           this->setGLProgramState(cocos2d::GLProgramState::getOrCreateWithGLProgram(shaderProgram));

こちらの行を

           this->setGLProgramState(cocos2d::GLProgramState::create(shaderProgram));

こうしていただくと、挙動は正しくなりますでしょうか?

yutaka-takeda-drecom commented 8 years ago

これで正しいなら、GLProgramStateのキャッシュによって、パラメーターが最終値しか見ていなくなっていると思われます。 (他のパラメーターは更新されていて、u_selectorのみなぜそうなるのかは、かなり気になりますが、デバッグしてみないと分かりません) お手数おかけして申し訳ないです。

yutaka-takeda-drecom commented 8 years ago

修正版を作ります。

yutaka-takeda-drecom commented 8 years ago

修正しました。

DKAlpha commented 8 years ago

ありがとうございます。大変助かります。 動作を確認してみます。

DKAlpha commented 8 years ago

プルリクエストの内容を1.2.6に反映いたしました。 一応#define OLDSHADER_USEを変更することで前の描画処理に戻せるようになっています。 よろしくお願いいたします。

yutaka-takeda-drecom commented 8 years ago

助かります。ありがとうございました。 こちらのプルリク、closeしてもOKですか?

DKAlpha commented 8 years ago

対応しましたので。Closeします。 ありがとうございました。