開発状況 2020 #9
HSP3のコンテストに向けてゲーム開発中です。間に合うかなぁ…。
というところなので、Lumino 本体の機能追加はあまり無く、不具合修正が多いです。
ただそんな中でも、シェーダの API は 1.0.0 向けのものを確定させました。 最も基本的な HLSL は次のような感じになります。(頂点シェーダは省略可能)
#include <Lumino.fxh> struct VSOutput { LN_VS_OUTPUT_DECLARE; // 独自の頂点定義を使いたいときはここに追加 }; VSOutput VSMain(LN_VSInput vsi) { VSOutput output; LN_ProcessVertex(vsi, output); output... = ...; // カスタムの頂点シェーダを書きたいときはここに追加 return output; } struct PSInput { LN_PS_INPUT_DECLARE; // 独自の頂点定義を使いたいときはここに追加 }; float4 PSMain(PSInput input) : SV_TARGET0 { LN_Surface surface; LN_ProcessSurface(input, surface); surface.Albedo = ...; // カスタムのピクセルシェーダを書きたいときはここに追加 return LN_ProcessPixel(input, surface); } technique Default { ShadingModel = Unlit; // 特定のシェーディングプロセスでのみ有効にしたいときは明示する pass Pass1 { VertexShader = VSMain; PixelShader = PSMain; } }
Lumino はこれをもとに、スキンメッシュや法線マップ、シャドウの有無といった様々な組み合わせのシェーダを自動生成して使います。
実際にカスタムシェーダを使ってみたところはこんな感じです。
後はノードベースのエディタから出力できればいいんだけど…直近は厳しそう。