とあるゲームプログラマの挑戦と敗北の歴史

UE4とプログラミングとmayaとpythonとhtmlとマラソンを中心に情報を発信する元「技術ブログを目指すブログ」から再始動した毎日の日々を発信するブログです。

DirextX:シェーダーファイルの作成手順

ひきつづきDirectX12の魔導書を学習中

Amazon.co.jp: DirectX 12の魔導書 3Dレンダリングの基礎からMMDモデルを踊らせるまで eBook: 川野 竜一: Kindleストア
f:id:toncrimentan_w:20210225191629p:plain



頂点シェーダーファイルの追加方法
・プロジェクトを右クリック
・追加>新しい項目を選択
・HLSL>頂点シェーダーファイル
 を選択することで頂点シェーダーファイルを作成
f:id:toncrimentan_w:20210226180033p:plain

・シェーダーの中身を作成

float4 BasicVS( float4 pos : POSITION ) : SV_POSITION
{
return pos;
}

・作成したシェーダーファイルを右クリック
・プロパティを選択
・HLSLコンパイラから
 エントリポイント、シェーダーモデルを変更する必要がある
 昔はテキストファイルを作っていたのですが、
 VisualStudioにこんな機能できたんですね?

f:id:toncrimentan_w:20210226180112p:plain



ピクセルシェーダーファイルの作成手順
ピクセルシェーダーも手順はだいたい同じ
シェーダーの中身、エントリポイント名、シェーダーモデルを変更して作成すること

float4 BasicPS() : SV_TARGET
{
return float4(0.5f, 0.5f, 1.0f, 1.0f);
}

f:id:toncrimentan_w:20210226180512p:plain



HLSLヘッダーファイルの作成手順
頂点シェーダーとピクセルシェーダーのやり取りを行うため
HLSLヘッダーファイルなる仕組みも存在する。
・プロジェクトを右クリック
・追加>新しい項目を選択
・HLSL>HLSLヘッダーファイル
 を選択することでHLSLヘッダーファイルを作成
f:id:toncrimentan_w:20210226180914p:plain

hlslもC++と同様#includeでインクルードすることができる。

HLSLヘッダー)

struct BasicType
{
float4 svpos:SV_POSITION;
float2 uv:TEXCOORD;
};

頂点シェーダー)

#include"BasicShaderHeader.hlsli"
float4 BasicPS(BasicType input ) : SV_TARGET
{
return float4(input.uv, 1, 1);
}

ピクセルシェーダー)

#include"BasicShaderHeader.hlsli"
BasicType BasicVS(float4 pos : POSITION,float2 uv:TEXCOORD)
{
BasicType output;
output.svpos = pos;
output.uv = uv;
return output;
}

つづく。