メモらないと記事を忘れそうなので、メモとして残しておきます。
DAGなどのNaniteみたいなLODメッシュの作り方が,下記記事で紹介されています。
https://blog.traverseresearch.nl/creating-a-directed-acyclic-graph-from-a-mesh-1329e57286e5
premake5覚書
こんねね~。Pocolです。
premake5の覚書をしておこうと思います。
XBox系のプラットフォームの場合は,Billzard社がpremake-consolesというGithubリポジトリを公開しているので,これを使えばよさそうです。
https://github.com/Blizzard/premake-consoles
で,青いプラットフォームの場合は,これまたBillzard社がソースコードをフォーラムにて公開しているので,それを使えばいいです。
問題はこれらが使えない場合です。既にpremake作っちゃっているやつとか,これから出てくる新規プラットフォームの場合とかですね。
自力で実装する必要があります。ほとんどの場合はSDKがC++だと思われるので,C++のコンパイルは問題なく対応できるでしょう。
じゃ、何が問題か?
そうです。前回やったシェーダ設定ですね。恐らく問題になるでしょう。
SDKでVS拡張が提供されている場合は,プロジェクトファイルに記述すればいいので,premakeを拡張していけばいいです。
やり方としては,
https://github.com/premake/premake-core/blob/master/modules/vstudio/vs2010_vcxproj.lua
のFxCompileおよびfxCompileで記載されている箇所を参考にします。
premake用に公開するAPIは,
https://github.com/premake/premake-core/blob/master/modules/vstudio/_preload.lua
のshadertypeとか,shadermodel,shaderincludedirsあたりを参考にLuaに実装を付け足します。
先ほど言った、VS拡張が提供されている場合はこんな感じでいいのですが,じゃ、提供されていない場合はどうすればいいでしょうか?
残念ながら,自分で作るしかないですね。
作り方については,以前に書いた「カスタムビルドルール!」と「Visual Studioと格闘中…。」の記事で紹介しているので,これを参考に実装すれば良いでしょう。
…ということでコンソールプラットフォーム用のpremakeのシェーダビルド対応について,覚書を書いてみました。
殆どの人には,全く役に立たないんですが,自分だけには役立つというしょうもない記事でした。
premake5でシェーダ設定する
こんこよー。Pocolです。
ちと分け合って,premake5でプロジェクトを作成する際に,シェーダのコンパイル設定を含めてしまいたいな~と思いました。
premake5からHLSLがサポートされているようなので,実際に書いてみました。
リポジトリは下記です。
https://github.com/ProjectAsura/premake_test
プロジェクトを生成するluaは下記のような感じで書きます。
local project_dir="project"
location(project_dir)
-- ソリューション名.
workspace "SampleSolution"
-- 構成名.
configurations { "Debug", "Develop", "Release" }
-- プロジェクト名.
project "SampleProject"
kind "ConsoleApp"
language "C++"
-- 出力ディレクトリ.
targetdir "bin/%{cfg.buildcfg}"
-- インクルードディレクトリ.
includedirs { "include/**" }
shaderincludedirs { "$(ProjectDir)../res/shader" }
-- 対称ファイル
files { "**.h", "**.cpp", "**.hlsl", "**.hlsli" }
-- シェーダモデルとエントリー名設定.
shadermodel "6.5"
shaderentry "main"
-- ヘッダ変数名とヘッダーファイル名設定.
shadervariablename "%%(Filename)"
shaderheaderfileoutput "$(ProjectDir)../res/shader/Compiled/%%(Filename).inc"
-- シェーダヘッダファイル設定.
filter { "files:**.hlsli" }
flags "ExcludeFromBuild"
-- 頂点シェーダ設定.
filter { "files:**_vs.hlsl" }
shadertype "Vertex"
-- ピクセルシェーダ設定.
filter { "files:**_ps.hlsl" }
shadertype "Pixel"
-- コンピュートシェーダ設定.
filter { "files:**_cs.hlsl" }
shadertype "Compute"
-- ジオメトリシェーダ設定.
filter { "files:**_gs.hlsl" }
shadertype "Geometry"
-- ドメインシェーダ設定.
filter { "files:**_ds.hlsl" }
shadertype "Domain"
-- ハルシェーダ設定.
filter { "files:**_hs.hlsl" }
shadertype "Hull"
-- 増幅シェーダ設定.
filter { "files:**_as.hlsl" }
shadertype "Amplification"
-- メッシュシェーダ設定.
filter { "files:**_ms.hlsl" }
shadertype "Mesh"
-- 構成設定.
filter { "configurations:Debug" }
defines {"DEBUG"}
shaderdefines {"DEBUG=1"}
symbols "On"
filter { "configurations:Develop" }
defines {"NDEBUG"}
shaderdefines {"NDEBUG=1"}
optimize "On"
symbols "On"
filter { "configurations:Release" }
defines {"NDEBUG"}
shaderdefines {"NDEBUG=1"}
optimize "On"
このluaファイルを使って,サンプルのリポジトリで下記のコマンドで,プロジェクトを生成します。
.\premake5.exe vs2022 --file=my_premake.lua
プロジェクトを生成すると projectフォルダが出来上がり,そこにソリューションファイルが作成されます。ソリューションファイルを開くと次の画像のような感じになります。

シェーダファイルのプロパティを見ると次のように設定されているはずです。

これで,シェーダのビルドが出来るようになるはずです。
下記のPremakeドキュメントに設定できる項目が記載されているので,より細かい設定をしたい方はドキュメントを参照すると良いと思います。
- shaderassembler
- shaderassembleroutput
- shaderdefines
- shaderentry
- shaderheaderfileoutput
- shaderincludedirs
- shadermodel
- shaderobjectfileoutput
- shaderoptions
- shadertype
- shadervariablename
…ということで,premake5でのシェーダ設定方法について紹介してみました!
GPU最適化資料集
たまにアドレスを忘れてしまうので,ここにリンクを残しておきます。
非常に素晴らしいリンク集だと思います。
GPU Optimization for Game Dev
サンプリングの参考資料。
Twitterみていたら,サンプリングの参考になりそうなツイートを見かけました。
SSAOとかの実装で使っていきたいなと思いました。
極座標をベースに点を打つ手法について,カタログ的に画面内部を格子状に分割して配置する.https://t.co/2ImyqyNaP4#p5js #creativecoding #dailycoding #generativeart pic.twitter.com/pxMhur7pNw
— Shunsuke Takawo (@takawo) October 23, 2022
画像に書いてあるサイトは下記の様です。
https://note.com/outburst/n/n631a3845186c
ReSTIRがサッパリ解からない。
この記事はレイトレ合宿9のアドベントカレンダー2023 7/13の担当分の記事です。
こんにちわ,Pocolです。
最近,ReSTIRを調べているのですが,未だにサッパリ解かりません(特にGRIS周辺)。
今回は,自分の理解を促すために自分なりにまとめたスライドを作ってみました!
しかし,内容をサッパリ理解していない人が作っているスライドなので内容が盛大に間違えている場合があります。
間違いがあった場合は,間違い箇所の指摘とその修正例を教えて頂けると大変ありがたいです。あるいは,「そういう説明よりもこういう説明の方がいいよ」とか「この項目の説明抜けてる!」とか,アドバイスも貰えると嬉しいです。
または,有識者が分かりやすい解説記事を書いてもらえると大変助かります。
あと,論文の内容を切り貼りしている関係で,数式の表記ゆれがあります。予め注意してください。
読み下ろしテクニックの話。
こんらみ。Pocolです。
自分は,駿台っ子なんですが,当時御茶ノ水校や千葉校,柏校などで英語長文を担当していた新井和泰先生の教え子でもあるのですが,
この歳になっても非常に役に立っているのが,新井先生から習った読み下ろしテクニックです。新井先生!滅茶苦茶役に立っています!!
こちらは一応文献的には,駿台フォーラム第18号で紹介されています。恐らく絶版していると思われるので,今手に入ることはないかもしれません。
で,ネットで検索していたら,訳下しという記事が出てきて,当時先生が言っていたような話がヒットしました。なんだか懐かしい気がしてきたので,時間を掛けて読んでみようかなって思います。
https://thbook.simul.co.jp/archive/category/同時通訳
先生が今だに現役だったら申し訳ないんですが,恐らくもう還暦を超えていて,営業妨害にはならないと思われるのと,非常に有用なテクニックなので,時間があればどこかで先生のテクニックを紹介したいと思います。まぁ興味ある人がいればですけども…。
書籍第2弾ネタ募集中。
こんぺこー。Pocolです。
本当に出るかどうかを全く保証できないのですが,大分心の闇も癒えてきたので、書籍第2弾を検討しています。
ハーフベクトルのヤコビアン
こんねねー。Pocolです。
ハーフベクトルのヤコビアンが良く分かりません。
shikihuikuさんの記事を見れば済むことなんですが,せっかくなのでメモっておこうと思います。
標準体重達成!
こんにちわ、Pocolです。
相変わらずダイエットを頑張ってやっています。
本日の体重は58.9kgで,ついに58kgに突入しました!
上記の体重で分かるように標準体重以下になりました。
内臓脂肪レベルは6.5で,体脂肪率は15.3%,BMIは21.8です。筋肉量が前回よりもちょっと減り気味なのが,気になる点です。
まだ,ダイエット始めて2カ月は立っていないのですが,1カ月ちょっとでここまで削れたのは自分でも驚きですね。
基本的に,ダイエットの仕方はほとんど変わっていないですが,最近停滞期気味なので,仕方なくFitboxingでの運動量を増やしました。
朝・昼・晩と3回Dailyをこなす感じにしました。
血液検査の結果は次回の診察時に教えてもらえるそうで,次回の診察で,薬物治療をやめるかどうか判断しましょうかという話になりました。
今のところは,あまり体の方も問題なく調子いい感じです。夜中に突然目が覚めるのも無くなって,ぐっすり眠れています。
会社もそろそろリアル出社に切り替わるようで,飲み会等も増える気がしているので,何とかそれまでには治ってほしいなぁと思っています。