Metal RayTracing のサンプルでキーボードを使う

下記のコードを Main.storyboard の Game View Controller Scene -> Game View Controller -> View の中の Custom Class MTKView を書き換えて、GameView を設定する

#import <Cocoa/Cocoa.h>
#import <Metal/Metal.h>
#import <MetalKit/MetalKit.h>
#import "Renderer.h"

@interface GameView : MTKView
@end
#import "GameView.h"
@implementation GameView
- (void)keyDown:(NSEvent *)theEvent
{
    switch (theEvent.keyCode)
    {        
        case 0x12: [self._renderer Press1]; break;
        case 0x13: [self._renderer Press2]; break;
        case 0x14: [self._renderer Press3]; break;
        
        case 0x00: [self._renderer PressA]; break;
        case 0x01: [self._renderer PressS]; break;
        case 0x02: [self._renderer PressD]; break;
        case 0x0D: [self._renderer PressW]; break;
        
        case 0x0E: [self._renderer PressE]; break;
        case 0x0C: [self._renderer PressQ]; break;
        
        case 0x7C: [self._renderer PressRight]; break;
        case 0x7B: [self._renderer PressLeft]; break;
        
        default:
            NSLog(@"keyDown:'%@' keyCode: 0x%02X", theEvent.characters, theEvent.keyCode);
            break;
    }
}
- (BOOL)acceptsFirstResponder
{
    return YES;
}
@end

さくらでサーバー構築

新しい PHP 用サーバーを立てる

さくら VPS の管理画面から、右上のメニューから「ネームサーバー登録」を選択。

サブドメインを追加する場合は該当のドメイン名から「ゾーン編集」を選択。

左の「変更」からエントリの追加と変更に情報を機銃。
エントリ名はサブドメイン名。
種別はIPアドレス(A)。
値はサーバーの IPアドレス。

ネコでもわかる!さくらのVPS講座~第一回:VPSてなんだろう?~https://knowledge.sakura.ad.jp/7938/

を参考に、LAMP 環境を用意。(SQLは使わない)

# SSH のポート番号を変更した後のエラー
ssh: connect to host xxx.xxx.xxx.xxx port 00: Connection refused
ファイアウォールによって通信が遮断されている。

# port 00 を解放
firewall-cmd –add-port=00/tcp –zone=public –permanent

# リロード
firewall-cmd –reload

# 公開鍵をサーバーに追加
ssh-copy-id -i ~/.ssh/id_rsa.pub user@xxx.xxx.xxx.xxx. -p 0000

# SSH でアクセスできない
known_hosts の値を消す。

C# や WPF のブックマーク

Taskを極めろ!async/await完全攻略
https://qiita.com/acple@github/items/8f63aacb13de9954c5da

async (C# リファレンス)
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/async

await (C# リファレンス)
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/await

C# 今更ですが、HttpClientを使う
https://qiita.com/rawr/items/f78a3830d894042f891b

第5回 WPFの「データ・バインディング」を理解する 
http://www.atmarkit.co.jp/ait/articles/1010/08/news123.html

C#の主要インターフェース解説:IEnumerable
http://garicchi.hatenablog.jp/entry/2014/09/12/200000

C# 7.0 の新機能
https://qiita.com/tadnakam/items/afe390679e8b5dfa7fa3

C# 6.0 新機能まとめ
https://qiita.com/tadnakam/items/a42d320f2bb19c69a004

Amazon Go の発想

近所のサミットで買い物をしていて、混んでいるレジに並んでいた時に、ふと Amazon  がレジを通らなくても商品を買える店を出していたことを思い出した。

今までは技術的な問題 (商品の識別。購入可否の判別)で、人がレジを通して商品を識別するしか無かったが、センサー類やAI技術の発展がカメラに映るだけ?で、商品の識別を可能にした。

商品をカゴに入れ、レジに持っていくという事に疑問を感じ、最適化・自動化できるだろうという発想に至ったのは凄いし、机上の空論では無く、それを実現するだけの体力と技術も合わせているのも凄い。

NVIDIA 関連のブックマーク

NVIDIA TURING GPU ARCHITECTURE
https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf

NVIDIA、FP32で演算するCNNをINT8に変換して性能を2.5~3倍に引き上げるアルゴリズムを開発
https://car.watch.impress.co.jp/docs/event_repo/gtc2017/1058524.html
FP32 から INT8 に精度を落としても推論の結果は変わらない。

NVIDIAの2019年第3四半期決算は先行き不安な結果に
https://www.us-stock-investor.com/entry/nvda-nvidia-20019q3-earnings

DirectML は 2019年春頃

Accelerating GPU inferencing with DirectML and DirectX 12
https://www.highperformancegraphics.org/wp-content/uploads/2018/Hot3D/HPG2018_DirectML.pdf

USING AI TO ACCELERATE YOUR GAME (PART 2) 
https://developer.nvidia.com/using-ai-slide

DirectML は 2019年春頃にまずはプレビュー版が出る予定らしい

Deep Learning for Real-Time Rendering: Accelerating GPU Inferencing with DirectML and DirectX 12
http://on-demand.gputechconf.com/siggraph/2018/video/sig1814-2-adrian-tsai-gpu-inferencing-directml-and-directx-12.html
SIGGRAPH 2018 のマイクロソフトによる DirectML の紹介

CNN for upscaling RGB images
Auto-encoder network
・2 upsample layers
・7 convolutional layers
・6 normalization layers
・6 ReLU activation layers
・Model output residual which is additively blended to image

その他

ディープラーニング DeepAge
https://deepage.net/categories/deep_learning/

Perceptual Losses for Real-Time Style Transfer and Super-Resolution
https://arxiv.org/abs/1603.08155
2016年5月に発表された、最近の Super-Res や Style Transfer の元になった論文

画像の高速スタイル変換を行う論文の紹介
https://qiita.com/dsanno/items/a79a87720239f295234b

Convolutional Neural Networkとは何なのか
https://qiita.com/icoxfog417/items/5fd55fad152231d706c2

畳み込みニューラルネットワークの仕組み
https://postd.cc/how-do-convolutional-neural-networks-work/

Convolutional Neural Networks のトレンド
https://www.slideshare.net/sheemap/convolutional-neural-networks-wbafl2

DirectX Raytracing

2019年1月時点のまとめです。

DirectX Raytracing は 2018年3月に行われた GDC 2018 で発表され、半年間のオープンなテスト期間を得て Window 10 October 2018 Update (RS5, ver1809) の提供と同時に正式リリースとなりました。

ただ登場したばかりのため機能のため、対応している GPU ハードウェアが今のところ NVIDIA の Titan V か Turing アーキテクチャの製品しかありません。

CES 2019 で、Turing のミドルウェアレンジである Geforce RTX 2060 が発表されましたが、それでも日本円で4万を超えてしまうため、DXR が一般に普及していくのにはまだ時間がかかりそうです。

ゲーム開発者が簡単な DXR API のテストなど、単純に実行するだけであれば Fallback Layer を使用するという方法もあります。Fallback Layer が何かは以前の記事にまとめています。
https://blog.acheul.net/?p=191

DXR のドキュメント資料は、下記のページからダウンロード可能です。
2019/1 現在のドキュメントのバージョンは v1.01 です。
http://forums.directxtech.com/index.php?topic=5860.0

NVIDIA は Project Sol という名前の、リアルタイムレイトレーシングのデモを公開しています。2018年8月の SIGGRAPH 2018 で part1 が、2019年1月の CES 2019 で part2 が公開されました。
https://www.youtube.com/watch?v=pNmhJx8yPLk

以下、DXR の記事。

DirectX Raytracing and the Windows 10 October 2018 Update
https://blogs.msdn.microsoft.com/directx/2018/10/02/directx-raytracing-and-the-windows-10-october-2018-update/

Why Today Is an Exciting Moment for Gamers and Important Catalyst for Ray-Traced Games
https://blogs.nvidia.com/blog/2018/10/02/real-time-ray-tracing-rtx-windows-10-october-update/

GDC 2018 DirectX Raytracing
https://msdnshared.blob.core.windows.net/media/2018/03/GDC_DXR_deck.pdf

MODERN GRAPHICS ABSTRACTION AND REAL-TIME RAY TRACING
https://www.ea.com/seed/news/syysgraph-2018-modern-graphics-abstractions-real-time-ray-tracing

その他

NVIDIA RTX and GameWorks Ray Tracing Technology Demonstration
https://www.youtube.com/watch?v=tjf-1BxpR9c

Introduction to NVIDIA RTX and DirectX Ray Tracing
https://devblogs.nvidia.com/introduction-nvidia-rtx-directx-ray-tracing/

Apple iOS/macOS のリアルタイムRayTracing API

2018年3月に開催された GDC 2018 で Windows の DXR が発表されたあとすぐに、Apple は 2018年5月の自身の開発者イベント WWDC2018 でリアルタイム RayTracing を実現するデモを公開しました。

WWDC 2018
https://developer.apple.com/videos/play/wwdc2018/606/

Metal for Accelerating Ray Tracing
https://developer.apple.com/documentation/metalperformanceshaders/metal_for_accelerating_ray_tracing