Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

197 total results found

その1

GameBaseDx11界隈 シャドウマップへの道(険しい)

第1章:シャドウマップの考え方 この章の目的 コードを書く前に、なぜ「ライトから見たZ値」を比べると影がわかるのかを理解する。 この章は説明だけ。コード変更はしない。 1. 普通のライト計算だけでは影は出ない 今のライト計算では、だいたい次のことをしている。 面の向きとライト方向を比べる ↓ ライトの方を向いていれば明るい ライトと逆を向いていれば暗い これは「その面がライト方向を向いているか」を見ているだけ。 しかし、影を出すには次のことも調べる必要がある。 ライトとその場所の間に、別の物体があるか 手前に...

その2

GameBaseDx11界隈 シャドウマップへの道(険しい)

第2章:ライトを仮想カメラとして扱う この章の目的 シャドウマップを作るには、ライトから見た画面が必要になる。 そのために、ライト用のビュー行列と射影行列を追加する。 この章では、まだ画面は変わらない。 考え方 普通の描画では、カメラから見た画面を作っている。 カメラ位置 ↓ 見る シーン シャドウマップでは、ライトから見た画面を作る。 ライト視点の仮想カメラ位置 ↓ 見る シーン 今回のライトは平行光源として扱う。 平行光源には本来「位置」はない。 しかし、シャドウマップを作るには「ライトから見た画...

その3

GameBaseDx11界隈 シャドウマップへの道(険しい)

第3章:シャドウマップ用テクスチャを作る この章の目的 ライトから見たZ値を保存するためのテクスチャを作る。 まだそのテクスチャには何も描かない。 この章でも画面は変わらない。 考え方 シャドウマップは普通の色画像ではない。 色を保存する画像ではなく、ライトから見たZ値を保存する画像 DirectXでは、テクスチャ本体と、その使い道を分けて考える。 ID3D11Texture2D ├─ DepthStencilView : 深度を書き込む口 └─ ShaderResourceView : シェーダー...

その4

GameBaseDx11界隈 シャドウマップへの道(険しい)

第4章:深度だけを書く ShadowMap.hlsl を作る この章の目的 ライト視点で深度だけを書くための専用シェーダーを作る。 通常描画用の Simple3D.hlsl とは別に、ShadowMap.hlsl を追加する。 この章でも画面は変わらない。 考え方 通常描画では、色・テクスチャ・ライト計算を使う。 しかしシャドウマップ作成では、必要なのはライトから見たZ値だけ。 必要:頂点をライト視点に変換する 不要:色、テクスチャ、ライティング ピクセルシェーダーは何もしなくてよい。 SV_POSITION ...

その5

GameBaseDx11界隈 シャドウマップへの道(険しい)

第5章:モデルをシャドウマップに描けるようにする この章の目的 通常描画用の Draw() とは別に、シャドウマップ作成用の DrawShadow() を追加する。 この章でも画面は変わらない。 考え方 普通の Draw() は、画面に表示するための描画。 Draw() 色を出す テクスチャを読む ライト計算をする カメラ視点で描く シャドウマップ用の描画では、色はいらない。 DrawShadow() 色を出さない テクスチャを読まない ライト計算もしない ライト視点のWVPだけ...

その6

GameBaseDx11界隈 シャドウマップへの道(険しい)

第6章:描画を2パス構成にする この章でやること Stage::Draw() の描画を2回に分けます。 パス1:ライト視点で深度だけ描く(シャドウパス) パス2:カメラ視点で普通に描く(メインパス) あわせて、第7章でシェーダーがライトVP行列を使えるよう、 CONSTANTBUFFER_STAGE に matLightVP を追加して毎フレーム送ります。 この章が終わっても画面の見た目は変わりません。 影が出るのは第7章からです。 この章でのコード変更点 ファイル 変更内容 Stage.h CO...

その7

GameBaseDx11界隈 シャドウマップへの道(険しい)

第7章:Simple3D.hlslで深度比較して影を出す この章でやること Simple3D.hlsl のピクセルシェーダーで、シャドウマップを読んで影を判定します。 この章で初めて画面に影が出ます。 ただし影のエッジはジャギー(ギザギザ)になります。 なめらかにするのは第8章で行います。 この章でのコード変更点 ファイル 変更内容 Stage.cpp メインパスの前後にシャドウマップSRVをセット/解除 Simple3D.hlsl g_shadowMap・g_shadowSampler の宣言...

その8

GameBaseDx11界隈 シャドウマップへの道(険しい)

第8章:比較サンプラーで影のエッジをなめらかにする この章でやること 影のエッジのジャギー(ギザギザ)を改善します。 第7章では Sample() で1点だけ読んで影を判定していました。 この章では SampleCmpLevelZero() に差し替えて、近隣の複数点を平均した判定にします。 この章が終わると影のエッジが少しなめらかになります。 この章でのコード変更点 ファイル 変更内容 Simple3D.hlsl SamplerState を SamplerComparisonState に変更(...

その9(おまけ)

GameBaseDx11界隈 シャドウマップへの道(険しい)

第9章:影が出ないときの確認ポイント 目的 つまずきやすいところを、症状別に確認できるようにする。 1. 影がまったく出ない 確認すること Stage::Draw() で Direct3D::BeginShadowPass() を呼んでいるか。 Model::DrawShadow(hDonut_) を呼んでいるか。 Direct3D::EndShadowPass() を呼んでいるか。 Stage::Draw() のメインパス前に PSSetShaderResources(1, 1, &pShadowSRV) を...

DirectXTKとAudio

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

Step 00 DirectXTK Audio の基本 この回の目的 この回では、DirectXTK Audio で使う基本的なクラスの役割を整理します。 音を鳴らすプログラムでは、いきなりコードを書く前に、次の3つを分けて考えることが大切です。 AudioEngine … 音を鳴らす仕組み全体 SoundEffect … 音声ファイル1個分のデータ SoundEffectInstance … 実際に再生中の音 この3つの違いが分かると、DirectXTK Audio ...

前準備その2 スマポ

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

スマートポインタ入門 目的 この資料では、C++ の std::unique_ptr の基本的な使い方を学びます。 今回の目標は、スマートポインタを深く理解することではありません。 まずは、次のことが分かれば十分です。 new で作ったものは delete で消す必要がある std::unique_ptr を使うと delete を自動でやってくれる std::make_unique は unique_ptr 用の new のようなもの この考え方を使って、あとで DirectXTK Audio の AudioE...

01 音を鳴らしてみるだけ

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

第1回 DirectXTK Audioで音を1回鳴らす この回に入る前に 先にDirectXTKとAudio を読み、次の3つの役割を確認しておきます。 AudioEngine : 音を鳴らす仕組み本体 SoundEffect : wavファイルを読み込んだ音データ SoundEffectInstance : 再生中の音を操作するもの この回では、まず AudioEngine と SoundEffect だけを使います。 目標 この回では、DirectXTK Audioを使って、...

02 Engineに組み込んでゆくぅ

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

第2回 Audio機能をEngineに組み込んでゆくぅ 目標 この回では、第1回で TestScene に直接書いた音声処理を、エンジン側の機能として分離します。 最終的に、ゲーム側から次のように使える形にします。 file_path testPath = "Assets/Audio/test.wav"; Audio::Load("test", testPath); Audio::Play("test"); DirectXTK Audioの細かい処理は、Audio の中に隠します。 今回変更するファイル Eng...

03 SEとBGMを別扱いに(なんで?)

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

第3回 効果音とBGMを分ける 目標 この回では、Audio機能を次の2種類に分けます。 SE : 効果音。短い音。何度も鳴る。 BGM : 背景音楽。長い音。基本的に1曲を流し続ける。 最終的に、次のように使える形にします。 file_path shotPath = "Assets/Audio/SE/shot.wav"; file_path stagePath = "Assets/Audio/BGM/stage.wav"; Audio::LoadSE("shot", shotPath); Audio::Lo...

04 サウンドのコントロール機能(簡単なのだけ)

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

第4回 音量管理とBGMフェード 目標 この回では、オーディオエンジンに音量管理を追加します。 次の3種類の音量を扱います。 MasterVolume : 全体の音量 SEVolume : 効果音の音量 BGMVolume : BGMの音量 さらに、BGMのフェードアウトも追加します。 シーン切り替え時に、音を急に止めず、自然に小さくできます。 今回変更するファイル Engine/Audio.h Engine/Audio.cpp TestScene.cpp 今回のフェード処理について この資料...

05 応用編 3D音響

GameBaseDx11界隈 DirectXTKを使ったオーディオマネジメント

第5回 AudioSourceと3D Audio 目標 この回では、音に位置を持たせます。 通常の効果音は、画面全体に同じように聞こえます。 3D Audioでは、音源の位置とカメラの位置を使って、左右の聞こえ方や距離による音量変化を作ります。 この回の最終形は次の使い方です。 Audio::SetListener(cameraPosition, cameraForward, cameraUp); Audio::PlaySE3D("explosion", soundPosition); さらに、音を鳴らす部品とし...

状態遷移ふたたび

Yz個人メモ

ゲームAI課題 センサー・視界・状態遷移表・状態遷移図を書いてみよう 1. 今日の課題 今回の課題では、モンスターAIの行動を センサー 視界 状態遷移表 状態遷移図 として整理します。 プログラムは書きません。 しかし、最後に C++ の switch case や State パターンへ変換できるように、条件や状態をきちんと整理します。 2. 今日のゴール この課題のゴールは、次の4つです。 1. モンスターが何を調べているのかを考える 2. センサーの結果をフラグとして整理する 3. 状態遷移表を書ける...

ステートパターン(オブジェクト指向的)

Yz個人メモ

C++ Stateパターン入門 センサー・状態遷移表・状態遷移図をクラス設計に変換しよう 今日のテーマ 前回は、モンスターAIを次の流れで整理しました。 センサーで状況を調べる ↓ フラグにする ↓ 状態を決める ↓ 状態遷移表を書く ↓ 状態遷移図を書く 今回は、その状態遷移表と状態遷移図を、C++の設計に変換します。 今回のテーマは、 Stateパターン です。 今日のゴール 今日のゴールは、次の3つです。 1. Stateパターンが何のためにあるのか理解する 2. switch case版との違い...

Stateパターンワーク

Yz個人メモ

C++ Stateパターン入門 信号機のStateクラスで考える 1. 今日の目的 この資料では、Stateパターンを信号機の例で学びます。 難しいゲームAIではなく、次の3つの状態だけを扱います。 赤 青 黄 信号機は、時間が来ると状態が変わります。 赤 → 青 → 黄 → 赤 このような「状態ごとに処理が違うもの」を、Stateパターンで書いてみます。 2. Stateパターンを一言でいうと Stateパターンは、 状態ごとの処理を、状態ごとのクラスに分ける方法 です。 信号機なら、次のように分けます...

ゲーム研究(自作に向けて)ワーク(6月18日)

ゲーム研究

自分が作りたいジャンルのゲーム解析ワーク 目的 これまでのワークでは、ゲームの面白さを考えるために、入力、出力、ルール、報酬、リスク、フィードバック、UIなどを分析してきました。 今回のワークでは、その総まとめとして、自分が今一番作ってみたいゲームのジャンルを1つ決め、そのジャンルのゲームを複数調べます。 そして、これまで学んだ解析項目を使って、そのジャンルのゲームにはどのような工夫がされているのかを整理します。 最後に、調べた内容をもとに、制作で意識するべき点をまとめます。 このワークのゴール このワークのゴー...