ハッピーホワイトデー★

今回は久しぶりに創作イラストを描いてみました~(^^)

残業オフィスな背景にしたかったんですが集中線みたいになってしまったーーーorz



今週はシェーダーのコンパイルについてメモします~~



どうやら.HLSL形式のファイルはコンパイルしないとプログラムでは使えないとのこと。

じゃ、HLSLのコンパイルってなんだす???ってなったので調べてみたところ、

HLSL言語ファイルからヘッダファイル(.H)あるいはバイナリデータファイル(.CSO)を生成してC++のプログラムから利用できるようにすることみたいで、

・VisualStudioを使ってコンパイルする方法
・コマンドプロンプトからfxc.exeを使ってコンパイルする方法
・実行時にD3DCompilerを使ってコンパイルする方法

があるみたいです。

とりあえず検索で出てくる公式ドキュメントのリンクをペタリ

シェーダーのコンパイル - Win32 apps | Microsoft Learn



ここからはとりあえず自分が試した方法のメモです。(実行時にD3DCompilerを使う方法は自分は使わないので試してません。)間違ってたらTwitterで教えてくださると幸いですm(__)m



VisualStudioを使う方法

HLSLファイルをプロジェクトに追加。

ソリューションエクスプローラーに出てくるので、右クリックメニューからプロパティを開きます。自分の環境に合わせて書き換えます。特に赤線で囲ったあたりは大事そう。エントリポイント名は作ったHLSLファイルのmain関数にあたる関数の名前のことみたいです。

プロパティの変更を適用して閉じたら、もう一度右クリックメニューを開き、コンパイルを選びます。

出力されてたらおっけーー





コマンドプロンプトからfxc.exeを使ってコンパイルする方法

まずはコマンドプロンプトのcdコマンドでfxc.exeのディレクトリに行く。自分のPCの場合このディレクトリにありました→「C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86」

同じディレクトリだったら↓をコピペで使えるかも

cd C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86


次にfxc.exeに続けて/Tコマンドでコンパイルするバージョンを指定、/Eコマンドでエントリポイントとなる関数名を指定、CSOファイルを出力したい場合/Foコマンドに続けて出力ファイル名を指定、Hファイルを出力したい場合/Fhコマンドに続けて出力ファイル名を指定、最後にスペースを入れてコンパイルするHLSLファイル名を指定・・・そしてエンターキーで実行!

↓コピペして書き換えたら使えるかも

fxc.exe /T vs_4_0_level_9_3 /E vshMain /Fo C:\Users\しんき\source\repos\hogehoge\hlsl\vsh.cso /Fh C:\Users\しんき\source\repos\hogehoge\hlsl\vsh.h C:\Users\しんき\source\repos\hogehoge\hlsl\vsh.hlsl

コンパイルするバージョン指定は今回は頂点シェーダー「vs」のShader Model 4 Level 9_3「4_0_level_9_3」を指定しています。エントリポイント名は作ったHLSLファイルのmain関数にあたる関数の名前のことみたいです(自分なかなか覚えられないので二回書きました(;^ω^)



Microsoft (R) Direct3D Shader Compiler 10.1 (using C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\D3DCOMPILER_47.dll)
Copyright (C) 2013 Microsoft. All rights reserved.

compilation header save succeeded; see C:\Users\しんき\source\repos\hogehoge\hlsl\vsh.h
compilation object save succeeded; see C:\Users\しんき\source\repos\hogehoge\hlsl\vsh.cso


こんな感じの結果になっていればおっけーー





というわけで今回はコンパイルのやり方をメモっていきました~!

■今週のゲーム制作:エフェクト作業仕上げ!

というわけで頑張りますぞ~!