This project is read-only.
2

Closed

乗算スフィアとして指定されたマテリアルが正しく表示されない

description

ゆきはね13式ミク ver1.0.1でヘッドホンフレームが白抜けします.
ヘッドホンフレームの材質のみ「乗算スフィア」になっているので,そのことが原因と思います.
次の修正でPMXエディタと同様の表示になりました.私がよく分かっていない分,長くなって申し訳ないですが,役に立てば嬉しいです.
  • DefaultShader.fx の ピクセルシェーダ (と頂点シェーダ) の第4引数に uniform bool mulSphere を追加, if (useSphareMap) のブロックを変更し,対応するテクニックを追加.
if ( useSphereMap ) {
        // スフィアマップ適用
        if (mulSphere)
            // 乗算スフィア
            Color.rgb *= SphereTexture.Sample(mySampler,IN.SpTex).rgb;
        else
            // 加算スフィア?
            Color.rgb += SphereTexture.Sample(mySampler, IN.SpTex).rgb;
    }
technique10 MulSphereObjectTechnique<string MMDPass = "object"; bool UseTexture = true; bool UseSphereMap = true; bool MulSphere = true; >
{
    pass TexturedMulSphere
    {
        SetVertexShader(CompileShader(vs_4_0, VS_Main(true, true, true, USETOON)));
        SetPixelShader(CompileShader(ps_4_0, PS_Main(true, true, true, USETOON)));
    }
}

technique10 MulSpheredUnTextureTechnique<string MMDPass = "object"; bool UseTexture = false; bool UseSphereMap = true; bool MulSphere = true; >
{
    pass UnTexturedMulSphere
    {
        SetVertexShader(CompileShader(vs_4_0, VS_Main(false, true, true, USETOON)));
        SetPixelShader(CompileShader(ps_4_0, PS_Main(false, true, true, USETOON)));
    }
}
  • CG/MMEEffect/MMEEffectTechnique.cs にプロパティを追加し,l.64行周辺で初期化
public ExtendedBoolean MulSphere { get; private set; }
MulSphere = EffectParseHelper.getAnnotationBoolean(technique, "MulSphere");
  • CG/MMEEffect/MMEEffectManager.cs の 406 行目辺りのの where 句に下記を追加.
&& MMEEffectTechnique.CheckExtebdedBoolean(teq.MulSphere, subset.MaterialInfo.SphereMode == MMDFileParser.PMXModelParser.SphereMode.Multiply)

file attachments

Closed Jan 20, 2014 at 2:15 PM by LimeStreem
修正済み

comments

LimeStreem wrote Nov 25, 2013 at 2:15 PM

確認してみます。少し今忙しいので、来週程度までに改善しておきます。

LimeStreem wrote Jan 20, 2014 at 2:15 PM

修正しました。