« 2019年5月 | トップページ | 2019年7月 »

2019.06.30

Direct3D 11にしたことで出てきた問題1

| |コメント (0)

 このエントリーをはてなブックマークに追加

Direct3D 9と11で同じマップでスクリーンショットを撮ったところ
下図のように結果が異なった。

Direct3D 9の場合
Screenshot0825dx9_20190630231201

Direct3D 11の場合
Screenshot0827dx11_20190630231301

下記の記事によると、
この違いはDirect3D 11を使った場合に発生する問題のようだ。

SaveDrawScreenToPNG関数について
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4079

下図は、Direct3D 11の画像をPhotoshopで拡大したもの。

Dx111

背景の白くなっているところを見ると、透過していることが分かる。

DXライブラリでは
DirectX11 を使用する環境では裏画面はアルファチャンネル付きの画像となっている。
アルファチャンネル付きの画像に対して
半透明のものを通常のアルファブレンドで描画すると計算上意図した結果が得られない。

試練の洞窟の画像は、png形式でアルファチャンネル付きの画像である。

マップ背景のレイヤー1の最初(最奥)に描画する画像で
今回のように「透過色として指定した色が使われている」画像を
DrawGraph系の関数の引数:transFlag = TRUEで透過すると
裏画面自体がアルファチャンネル付きの画像となっているため
そのまま透過してしまう。

このため、
「マップ背景のレイヤー1の最初(最奥)に描画する画像は透過しない」
ようにする。

なお、上図のミクのステータス部分のアルファブレンドの結果が異なるのは、
「通常のアルファブレンドで描画すると計算上意図した結果が得られない」
という方で

そっちは乗算済みアルファを使うことで解決するらしい。

<乗算済みアルファのすすめ>
https://dxlib.xsrv.jp/lecture/PremulAlpha/PremulAlpha.html

乗算済みアルファについての記事は、また後日

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.26

GeoGebra 数学アプリ

| |コメント (0)

 このエントリーをはてなブックマークに追加

GeoGebra という
関数グラフ、平面幾何、空間図形などが扱え、
無料で使えるオンライン数学ツールがあるようだ。

https://www.geogebra.org/?lang=ja

使うことがあるか分からないけど、
使いたいと思った時に思い出せるように
記事として残しておく。

 

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.25

Direct3Dのバージョン切り替えれるようにしてみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

先日の記事
2Dゲーム用素材向けに動的ライティング用ノーマルマップを生成出来るソフト「Laigter」を使ってみた
で書いたように
「Laigter」を使うとノーマルマップが生成できるため
ゲーム画面の見栄えが良くなりそうだと思った。

ノーマルマップを使ったライティングをする場合、
DXライブラリの3D関連関数を使う必要がありそう。

そこで、調査したところ、
DirectX 11でサンプルになりそうな下記の記事が見つかった。

ノーマルマップの3Dポリゴン

現在の初音ミク冒険記は、DirectX 9を使用しているが
Effekseerも歪み機能以外は、DirectX 11に対応しているし
DirectX 11は、Windows 7から標準だと分かったので
DirectX 11にしても良いのではないかと思った。

初音ミク冒険記でも歪み機能のサンプルは試したことがある。
でも、具体的に歪み機能を使うエフェクトを自作してない。

このことをツイートしたところ、
Effekseerのコミッターさんから
興味があったらDirectX 11の歪み機能について
調べて欲しいという話があった。

歪み機能のDirectX 9とDirectX 11の違いを確認する場合、
ソース内で直接バージョンを指定すると
毎回ビルドしないとイケなくなるので
DirectXのバージョン切り替えできる仕組みにした方が良さそう。

また、Windows 7でもDirectX 12が使えるし、
Windows10からはDirectX 12が標準で使えるので、
そのうちDXライブラリがDX12対応になった時にも
DirectXのバージョン切り替えの仕組みがあれば
対応しやすいんじゃないかと思う。

切り替えは、
デバッグファイル設定ツールの「詳細設定1」から行えるようにする。

2019/06/23現在、DXライブラリは、
DirectX 9/9EX/11に対応しているので
それを切り替えれるようにする。

Direct3d

もともと初音ミク冒険記でEffeksserを使うときは、下記の記述をしていた。

iRet = SetUseDirect3D9Ex(FALSE);

当時のEffekseerForDXLibのサンプルにあった記述だ。

また、Prominence3D for DirectX9のサンプルでも、
この記述があるようなので、
Prominenceのマスク機能を使うとしたら
この記述は、残しておいても良いかなと思っている。

なお、Direct3Dのバージョンを指定する際は、
SetUseDirect3DVersionを使う。

SetUseDirect3DVersionとSetUseDirect3D9Exについては
過去にDXライブラリの掲示板で
ゲーム以外のウィンドウでもWindowsキーが効かなくなる
のスレッドで質問したことがある。

この時、SetUseDirect3DVersionができた経緯と
SetUseDirect3D9Ex( FALSE ) ; は
SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; に相当する
ということを教えてもらっている。

なので、デバッグファイル設定ツールでDirect3D 11を指定した時に
SetUseDirect3D9Ex( FALSE ) ; が動かないようにした。

Direct3Dのバージョンによる違い変化が一番分かりやい
ボカロタウン入口の噴水で比較してみる。

Direct3d9

Direct3d11

Direct3D 9の方は、パーティクルがドットであることが目立つが
Direct3D 11の方が、ドット感が緩和され見栄えが良くなっている。

どのDirect3Dバージョンで起動しているか分かるように
デバッグ用コンソールにはDirect3Dのバージョンや
プログラマブルシェーダーのバージョンが出力されるようにした。

で、肝心の歪みエフェクトについて調べようとしたところ
別の問題が出てきた。
その問題については、次の記事に書くことにする。

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.22

メンドイからプロジェクトテンプレートを作ろう

| |コメント (0)

 このエントリーをはてなブックマークに追加

DXライブラリを使ったテスト用アプリを作りたい。

しかし、毎回、プロジェクトの設定をするのはメンドイ。
なので、プロジェクトテンプレートを作ることにした。

まずは、普通に DXライブラリの使い方解説 に掲載せれてる
自分の使っているVisual Studioのバージョンの説明通りに
サンプルプログラムを作り、動かして確認する。

メニュー「プロジェクト」-「テンプレートのエクスポート」を選択する。

「テンプレートのエクスポート ウィザード」画面が出たら「次へ」をクリックする。

「テンプレート名」を分かりやすい名前に変更して、「OK」ボタンをクリックする。
(うちはDxLibTestProjectにした)

これでプロジェクトテンプレートの作成は終わりだ。

確認のため、
メニュー「ファイル」-「新規作成」-「新しいプロジェクト」を選択する。

「インストール済み」-「Visual C++」のところを選択すると
先程、テンプレート名として入力した「DxLibTestProject」が一覧に出ている。

実際に「DxLibTestProject」をテンプレートとしたプロジェクトを作るときは
名前と場所を適切に変更してOKボタンを押せば良い。

これで今後DXライブラリを使ったテスト用アプリを作る時、楽になるはず!

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.20

2Dゲーム用素材向けに動的ライティング用ノーマルマップを生成出来るソフト「Laigter」を使ってみた

| |コメント (0)

 このエントリーをはてなブックマークに追加

3D人 -3dnchu- に下記の記事が掲載された。

Laigter 1.2 - 2Dゲーム用素材向けに動的ライティング用ノーマルマップを生成出来るソフト!無料!
https://3dnchu.com/archives/laigter-1-2/

どうやら2Dゲームで動的ライティングに対応する
ノーマルマップ(凸凹画像)を作れるソフトらしい。

記事によると「競合するツール」として
・Sprite Lamp
・Sprite DLight
・SpriteIlluminator
というのがあるみたい。

だが、これらは有償らしい。
それらと違い「Laigter」は無料でも使えるようだ

記事にある動画を見てみたところ、
ちょっと面白そうだったので使ってみた。

ダウンロードできるサイトは、コチラ
https://azagaya.itch.io/laigter

Laigter1

上図の紫の枠の部分のダウンロードボタンをクリックすると
下図の画面が出てくるので、同様に紫の枠の部分をクリックすると
無料でダウンロードできる。

Laigter2

で、使ってみたのが下の動画

動画を再生するには、videoタグをサポートしたブラウザが必要です。

動的ライティングができると、ゲームの見た目も向上しそうだが
どうやってDXライブラリに組み込むのかは、まだ分からない…(-_-;)

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.06

スマホとウォークマンにもブルーライトカットのソフトをインストール

| |コメント (0)

 このエントリーをはてなブックマークに追加

昨日、Windowsのブルーライトカット機能を使ってみたので
せっかくだからスマホとウォークマンにも
ブルーライトカットのアプリをインストールしてみた。

スマホにインストールしたのは、
「Blue Light Filter - Night Mode」

ウォークマンの方にも上記のアプリを
インストールしようとしたんだけど
なぜかインストールできなかったので
ウォークマン側は、「ブルーライトカット」という
そのまんまのアプリ名のアプリをインストールした。

これで快適になるかも!

 このエントリーをはてなブックマークに追加

| |コメント (0)

2019.06.05

Windowsの夜間モードを使ってみた。

| |コメント (0)

 このエントリーをはてなブックマークに追加

Windowsの設定「システム」にある「ディスプレイ」の中に
「夜間モード」なんてあったのね!

ツイッターのフォロワーさんのツイートで知った。

ディスプレイ設定なんて、ディスプレイを2つにしてから
ほぼ意識することなんて無かったからなぁ…

で、「夜間モード」って、なんぞ?

これをオンにすると、ブルーライトをカットしてくれる。

なので、夜にブルーライトモードをオンにする設定をしておくと
寝る前にパソコンをしていてもブルーライトがカットされるため
眠りにつきやすくなる、という機能らしい。

じゃあ、実際にどのくらい効果があるのかと思って試してみたら
ブルーライトをカットするPC用メガネを通してみた時と
同じように見える。

まぁ、今夜が初使用なので眠りにつきやすいかどうかは分からんが…

でも、寝付き以外でも、この機能の良い点としては、
ヘッドホンをする時にPC用メガネで耳が痛くならない
というのもあると思う。

深夜だけじゃなく、
ボカロとかCevioとか、合成音声のプログラムを使っている時や
ハイレゾ音源を聞く時は、ヘッドホン使うことがあるからね。

これは便利かもしれない!

 このエントリーをはてなブックマークに追加

| |コメント (0)

« 2019年5月 | トップページ | 2019年7月 »