.cppファイルや.hファイルと同様に、Shaderコードで数学的に機能するたくさんの関数を持つmakeファイルが必要です。以下のコードを仮定し.hlslファイルにファイルを含めるには?
はlight.hlslファイルに
struct DirectionalLight
{
float4 Ambient;
float4 Diffuse;
float4 Specular;
float3 Direction;
float pad;
};
// some structures...
................
.............
void ComputePointLight(Material mat, PointLight L, float3 pos, float3 normal, float3 toEye,
out float4 ambient, out float4 diffuse, out float4 spec)
{
//define fucntion that i need....
}
define other functions..
void ComputeSpotLight(Material mat, SpotLight L, float3 pos, float3 normal, float3 toEye,
out float4 ambient, out float4 diffuse, out float4 spec)
{
}
ですし、私はPixelShader.hlslファイルを作成し、このファイルには、私はしたくない。この
#include"light.hlsl"
float4 main(Pin pin):SV_TARGET
{
do something with functions in light.hlsl file.....
}
のようになりますこのコードをコピーしてすべてのhlslコードに貼り付けてください。もしライトコードを変更する必要があれば、すべてのhlslコードを変更する必要があります。
私はこれについてインターネットで検索しました。 ID3D10Includeクラスを実装すると、使用方法が教えられません... 使用するファイル拡張子がわかりません... .hlsliですか? like #include "lightfuncs.hlsli" ??
これにはどのような良い提案がありますか?それはまさに、通常のCのようなものだ
私はエントリポイントを記述しない場合、私はプロジェクト(押圧CTR + SHIF + B)をコンパイル時にエラーが発生します。どのように私はいくつかのhlslファイルが含まれていることをコンパイラに知らせることができますか? –
'' hlsli''を使用している場合、IDEはファイルをHLSLシェーダとしてコンパイルしようとしません。 –
@ChuckWalbourn "Visual Studioのデフォルトでビルドから除外"? – Matthias