MikuMikuMoving‎ > ‎

MMM2 エフェクト


 MikuMikuMoving2で使えるセマンティクスと特殊変数


MikuMikuMoving v2で使用可能なセマンティクスは以下の通りです。

 セマンティクス 型 概要
 WORLD float4x4 ワールド行列
 VIEW float4x4 ビュー行列
 PROJECTION float4x4 射影行列
 WORLDVIEW float4x4 ワールド x ビュー行列
 VIEWPROJECTION float4x4 ビュー x 射影行列
 WORLDVIEWPROJECTION float4x4 ワールド x ビュー x 射影行列
 DIFFUSE float3/4 ディフューズ色
 AMBIENT float3/4 アンビエント色
 EMISSIVE float3/4 エミッシブ色
 SPECULAR float3/4 スペキュラ色
 SPECULARPOWER float スペキュラパワー
 TOONCOLOR float3/4 トゥーン色
 EDGECOLOR float3/4 エッジ色
 POSITION float3/4 ライトまたはカメラのワールド空間内の座標
 DIRECTION float3/4 ライトまたはカメラのワールド空間内の向き
 VIEWPORTPIXELSIZE float2 スクリーンサイズ
 TIME float 再生時間
 ELAPSEDTIME float 前描画からの差分時間
 MOUSEPOSITION float2 マウス座標
 LEFTMOUSEDOWN float4
 左マウスボタン情報
 MIDDLEMOUSEDOWN float4 中マウスボタン情報
 RIGHTMOUSEDOWN float4 右マウスボタン情報
 CONTROLOBJECT 色々 指定オブジェクト情報
 STANDARDSGLOBAL string MMEと同等
 TEXTUREVALUE float配列 テクスチャの配列化
 SHADOWDEEP float セルフシャドウの濃さ
 SHADOWDEEP_POSITIVE float 
 SHADOWDEEP_NEGATIVE float 
 ADDINGTEXTURE float3/4 加算テクスチャモーフ値
 MULTIPLYINGTEXTURE float3/4 乗算テクスチャモーフ値
 ADDINGSPHERE float3/4 加算スフィアモーフ値
 MULTIPLYINGSPHERE float3/4 乗算スフィアモーフ値
 EDGEWIDTH float エッジ幅
 GROUNDSHADOWCOLOR float3/4 地面影色
 BACKGROUNDCOLOR float3/4 背景色
 ZNEAR float zNear値
 ZFAR float zFar値
 TESSELLATIONFACTOR float テッセレーションファクター値
 MATERIALTEXTURE texture2D 材質テクスチャマップ
 MATERIALSPHEREMAP texture2D 材質スフィアマップ
 MATERIALNORMALMAP texture2D 材質ノーマルマップ
 SELFSHADOWDEPTHMAP texture2D セルフシャドウ深度マップ
 RENDERCOLORTARGET texture2D MMEと同等
 RENDERDEPTHSTENCILTARGET texture2D MMEと同等
 ANIMATIONTEXTURE texture2D MMEと同等
 OFFSCREENRENDERTARGET texture2D MMEと同等
   
   

特殊変数
 変数 型
 概要
 parthf bool パースペクティブON/OFF
 spadd bool 加算スペキュラ
 transp bool 半透明ON/OFF
 use_texture bool テクスチャ有無
 use_spheremap bool スフィアマップ有無
 use_toon bool モデル:True アクセサリ:False
 usetoontexturemap bool トゥーンテクスチャ有無
 opadd bool 加算合成ON/OFF
 vertexcount int 頂点数
 subsetcount int サブセット数

 簡易シェーダ系エフェクト


MMEでのいわゆるシェーダ系エフェクトは、MMD互換ソフトの内部構造に大きく影響を受けます。
MMMv2では、動的パースやテッセレーション、影やエッジ描画といった部分をMMM側で動作させ、色や質感を決めるピクセルシェーダ部分のみを記載する簡易シェーダエフェクトを用意しています。

このエフェクトは「ShaderFunction」という関数のみを定義すれば動作します。

ShaderFunction関数
引数:
 引数 型 概要
 1 VS_OUTPUT
 頂点シェーダから受け渡される情報。後述。
 2 float セルフシャドウ値。0.0~1.0の値であり、1.0に近づくほど影が濃いことになる。
 3 bool テクスチャを使用している場合はTrue
 4 bool サブテクスチャを使用している場合はTrue
 5 bool スフィアマップを使用している場合はTrue
 6 bool モデルの場合はTrue
戻り値:
 型 概要
 float4 最終的な色(RGBA)。

※関数名、引数の型、戻り値は変更できません。

VS_OUTPUT構造体
第1引数のVS_OUTPUT構造体は以下のように定義されています。
 型 名前 セマンティクス 概要
 float4 Pos SV_POSITION 頂点座標
 float2 Tex TEXCOORD0
 テクスチャUV
 float4 SubTex TEXCOORD1 .xy:サブテクスチャUV、.zw:スフィアマップテクスチャUV
 float3 Normal TEXCOORD2 法線
 float3 Eye TEXCOORD3 カメラとの相対位置
 float4 SSPos TEXCOORD4 セルフシャドウ空間での頂点座標


描画制御
以下を定義することにより、エッジ、地面影、セルフシャドウマップ描画を制御できます。
定義するとデフォルト動作します。つまり、エッジを描画しない材質であれば、DRAWEDGEを定義してもエッジは描画されません。

 定義 概要
 DRAWEDGE 定義するとエッジを描画します。
 DRAWGROUNDSHADOW 定義すると地面影を描画します。
 DRAWSELFSHADOW 定義するとセルフシャドウマップに描画します。


関数内で使用できる変数(固定)

ShaderFunction関数内では、以下の変数を使用することができます。
名前は固定されています。自分で通常のセマンティクスを付けて定義し、使用することも可能です。

 型 名前 概要
 float4x4 WorldViewProjMatrix ワールド×ビュー×射影行列
 float4x4 WorldMatrix ワールド行列
 float4x4 ViewMatrix ビュー行列
 float4x4 ProjMatrix 射影行列
 float4x4 ViewProjMatrix ビュー×射影行列
 float4x4 LihtWorldViewPtojMatrix ライトから見たワールド×ビュー×射影行列(セルフシャドウ用)
 float4 MaterialDiffuse 材質ディフューズ色
 float3 MaterialAmbient 材質アンビエント色
 float3 MaterialEmissive 材質エミッシブ色
 float3 MaterialSpecular 材質スペキュラ色
 float SpecularPower 材質スペキュラパワー
 float4 MaterialToon 材質トゥーン色
 float4 EdgeColor エッジ色
 float EdgeWidth エッジ幅
 float TessellationFactor テッセレーションファクター
 bool spadd 加算スフィアフラグ
 bool IsDynamicPerspective 加算テクスチャモーフ値
 float4 AddingTextureColor 加算スフィアモーフ値
 float4 AddingSphereColor 乗算テクスチャモーフ値
 float4 MultipleTextureColor 乗算スフィアモーフ値
 float4 MultipleSphereColor カメラ位置
 float3 CameraPosition ライト方向
 float3 LightDirection ライトディフューズ色
 float3 LightAmbient ライトアンビエント色
 float3 LightSpecular ライトスペキュラ色
 texture2D ObjectTexture 材質テクスチャ
 texture2D ObjectSubTexture 材質サブテクスチャ
 texture2D ObjectSphereMap 材質スフィアマップ
 texture2D ObjectSelfShadowMap セルフシャドウマップ
 SamplerState BaseSampler 材質テクスチャ/サブテクスチャ/スフィアマップで使用するSamplerState
 SamplerState ObjSelfShadowSampler セルフシャドウマップで使用するSamplerState