NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

「2D多角形の内部、外部判定のやり方」のメモ

bowbowbow.tistory.com 判定とは一体 Aは外部にあって、Bは内部にあることが分かる。 2Dの多角形に対し、AまたはBみたいな点が図形の内部にあるか外部なのかを判別することを示す。 図形の内部に位置する点の特徴は Aは交点が偶数。Bは奇数のことがわかる。 …

超簡単なBehaviour Treeを実装してみた

Finite-State Machineとは(Behaviour Treeの以前に。。。) en.wikipedia.org Finite-State Machineは人工知能または条件による行動の分岐を実装する基本的な方法の一つである。 人工知能の各行動をモジュール化させたので、ある程度に柔軟さは持っているが…

「8 Most Common 3D File Formats in 2019」のメモ

all3dp.com 3Dファイルの基本的な目的は、3D情報をテキストまたは特定のテンプレートを持ったバイナリファイルに込めたものである。 3D情報とは、Geometry, Appereance, SceneそしてAnimationsがある。3Dモデルのファイルの中では一部しか込められないものも…

「ゲームプログラマの実力向上法」のメモ

게임 프로그래머 실력향상법 자료조사 from Daeyoung Hwang www.slideshare.net 「コンシューマ>オンライン>モバイル>順でプラットフォームによって実力が優れているわけでもない。 昔はそうだったが、UnityかUE4のエンジンが登場し、モバイルに写った開…

C++のCovarient Return Typesを検証してみた

C++

en.m.wikibooks.org C++でvirtualの関数を継承(Override)したりして関数を書き直すことになると、普通はリターンタイプを同じにして返すのが普通ですね。 しかし継承したタイプのOverrideした関数のリターン値がベース仮想関数の返す型を継承としたものとな…

DirectX11でGPUの作業時間を測定してみた

ImGuiで作業時間を測定する reedbeta.com DirectX11を勉強しながら、サンプルのGPUの各作業時間を測定するため検索してみたところ、ID3D11Queryというのを用いてGPUの時間を測定することがわかりました。 SH-D3D11サンドボックスプロジェクトのサンプル1と…

今更ですがCELESTEのA-Sideをクリアしました。

就活がほぼ最後に入り、暇が出来たのでスイッチでやってみました。今は難しいプラットフォームアクションゲームが多いし、ストーリー展開でのステージは平均のゲームに比べてはちょうど良い難易度のゲームだったと思います。 ストーリーだけ進行しようとする…

Primitive ShaderとかMesh Shaderとかを調べてみた。

今のGPUそしてグラフィックスで通用されているシェーダーレンダリングのパイプラインを纏めると以下になりそうです。 レンダリングパイプライン 独立パイプライン ~OpenGL 3.0 固定パイプライン なし ~OpenGL 4.0 VS > GS > FS なし OpenGL 4.0~ VS > TCS > …

UE4のマテリアルのCustomノードでの拡張テクニック

UE4

forums.unrealengine.com UE4でいろいろとマテリアルを触る時に、基本的に与えられたノードだけじゃ複雑なものがちゃんと書けないことがありました。という時に使ってこなすのがCustomというノードで、これは直接HLSLコードを書いてシェーダーを作成すること…

最近GDC Vaultで見た動画まとめ

gdcvault.com 2017年に販売されたFPSゲーム、「Destiny」の多彩多様のグラフィック表現を描画するために独自のシェーダー言語「TFX」の仕組みとその周りのツール操作、最適化などのあらすじを発表したもの。 未だ技術の知識が足りない関係で個人としては30分…

C++の類似デストラクタ(Pseudo-Destructor)のメモ

C++

Pseudo Destructorとは Pseudo Destructorは、単語通りに「類似」のデストラクタです。 テンプレートプログラミングなどをして、型引数 Tがデストラクタを持っているかないかにかかわらず挙動を同じにさせる時に良く使われるらしいです。 クラスではないタイ…

プロジェクトをVS2019に移しました。

Dy

本日Visual Studio 2019が出たので、早速VS2017から作業環境を変えました。 性能的にはVS2017からもメモリ占有率か使用容量が1/4までに減ったそうですので期待をもって移してみましたが、そんなに減ることじゃなかったです。多分Reshaper C++のせいでメモリ…

How is Vulkan defferent from previous graphics APIs?のメモ

developer.samsung.com OpenGLのような昔のグラフィックスAPIは現在のGPUのデザインとは結構違う時期に設計されたものである。 現代のGPUは無数なコアがあって、それを並列的に処理させてレンダリングなどに必要となる演算量をカバーすることになっている。 …

再度報告。DyのSDFフォントジェネレーターに機能を追加しました。

Dy

190227バージョン 「About」窓を作りました。後のFixedバージョンではAbout窓に使ったライブラリの名前、そして製作者のブログの遷移先を実装します。 フォントのSDFマップの生成手順のロジックを変えました。以前まではstd::asyncとstd::futureを使用しまし…

Vulkanを触ってみました。

objファイルと、テクスチャーファイルを読み込みして、MSAAまで適用した姿 vulkan-tutorial.com 上のVulkanの基礎的な部分のチュートリアルサイトを参考にして、一番簡単な「オブジェクトの頂点読み込み」「Uniformバッファの値入力」「レンダリング」「MSAA…

imguiで日本語文字を出力するためにOSからのフォントを読み込みしたこと。

github.com imgui(厳密にいうとDear ImGui)というGUIライブラリーはC++環境でUI窓を作らせてくれる便利なライブラリです。QtまたはNana、Juceなどに比べればちょっと違った構造を持っていますが、プロトタイプまたは既存のビデオゲームなどでのデバッグUI…

Windows+VS環境でabort()をハンドルする方法

C++

やり方 Windowsでのabort()は基本的にはSIGABRTというシグナルを出します。 -NIX系列のOSではsigactionなどの関数でシグナルをハンドリングすることが出来ますが、Windowsのデバッグ環境で呼び出されるabort()から出るシグナルをハンドリングは以下のような…

nlohmann::json「JSON for Modern C++」の浮動小数点数の減らし方のメモ

C++

はじめに github.com nlohmann氏のJSONライブラリである「JSON for Modern C++」はC++環境でのJSONシリアルライズ文字列を読み込みするときに有用に使えるライブラリです。 速度面としては「RapidJSON」のようなライブラリには勝てないんですが、STLの操作面…

ShaderToyで「Nier:Automata」の後処理っぽくレンダリングしてみた。

はじめに sawcegames.com 今回はスクエア・エニックスさんのNier Automataの様々な後処理効果をShaderToyで再現してみようかとします。上のリンクから提供するチュートリアルを見ながら、HLSLコードをShaderToyが支援するGLSLに移してみたいと思います。

ShaderToyで「アナログ画面」っぽくレンダリングしてみた。

はじめに 以前にやったプロジェクトの(けど結局限界性がはっきりしてて捨てざるを得なかった)OPGS16ゲームフレームワークでは、下のように昔のテレビでゲームをするようにする後処理がありました。

「一流グラフィックスプログラマへの道~リアルタイム編~」の感想及びメモ。

はじめに いろいろとプロジェクトを作っているのですが、実は私はゲームのグラフィックスに興味があります。そしてゲーム開発界隈に入ってから最終的にはローレベルを弄りまくるグラフィックスプログラマになりたいです。(エンジンを底を触りながらグラフィ…

Head First デザパタ復習 メモ(1)

序文 OOPとそのデザインパターンについての感覚が薄れていて、復習を始めました。多分3,4個くらいで終わりそうです。

Modern C++ Design Chapter 2 Memo (1)

C++

2.2 Partial Template Specialization クラスに対しての部分特殊化は通じるが、メンバー関数や一般関数での部分特殊化は出来ない。 関数をテンプレートに対して部分的に特殊化したい場合なら、以下のようにオーバーローディングをするしかない。 template <class T, class U> T</class>…

報告。`Dy`専用のSDFFontGeneratorツールを作りました。

Dy

報告 ツールのウィンドウ画面 Dyゲームフレームワークのフォントレンダリングに必要するテクスチャをバッチで生成してくれるツールを作りましたことをご報告申し上げます。

C++静的分析ツールのCppDependを使用してみた。

C++

CppDependとは www.cppdepend.com CppDependはCまたはC++のプロジェクトのコードを分析してコードの維持管理を容易くできるようにする分析ツールです。これを使うによって下記のことが把握できます。 コードの総量(LOC)が把握できる。 総コードとコメント…

グラフ・最短距離アルゴリズムのまとめメモ(3)

序文 「グラフ・最短距離アルゴリズムのまとめメモ(2)」に引き続きJPS、JPS+、GoalBoundingアルゴリズム(短距離アルゴリズム)を書きたいと思います。 日本語下手ですので用語について指摘して頂けましたらありがとうございます。 本文 JPS(Jump Point …

グラフ・最短距離アルゴリズムのまとめメモ(2)

序文 「グラフ・最短距離アルゴリズムのまとめメモ(1)」に引き続き、Dijkstra、Bellman-ford、A*、そしてJPSから派生した最短距離アルゴリズムを書きたいと思います。 日本語下手ですのでちょっと用語について指摘して頂けましたらありがとうございます。…

グラフ・最短距離アルゴリズムのまとめメモ(1)

序文 自分の頭の中で纏まらなくてブログで復習を兼ねて書きたいと思います。 そしていろいろと調べたりして基本以外にもある良いアルゴリズムも纏めて書こうしました。 参照 INTRODUCTIONS TO ALGORITHMS 3rd EDITION Chapter 22 幅優先探索 - Wikipedia 深…

C/C++のビルド過程のメモ(The C++ Build Process Explained)

序文 C++のビルド過程が忘れつつありましたのでそれに関する良い文書を探し、復習を兼ねてメモしてみました。 参照リンク github.com 本文 1. Overview C++のビルド過程は既存のC言語のビルド過程に基づき築かれている。 C++のビルド過程中にリンギングはコ…

はてなブログでLaTeXを使いたかったのでまとめメモ

序文 git pageを運用していた時には、を使用するためにMathJaxを導入して使っていました。ですけどはてなブログに移転してからを導入して使用する方法がないかわかりませんでした。 ですけどちょっと探してたらははてなブログにビルトインとして設置されてお…