Gregory Igehy

Dancing at hemisphere coordinate

Notes of sRGB sampling for HDR images at Unity

Notes of Google cardboard SDK for Unity

Notes of target platforms for shaders

#pragma target 2.0
// DX9 shader model 2.0.
// Limited amount of arithmetic & texture instructions; 
// 8 interpolators; no vertex texture sampling; 
// no derivatives in fragment shaders; no explicit LOD texture sampling.

#pragma target 3.0
// DX9 shader model 3.0:
// derivative instructions, texture LOD sampling, 10 interpolators,
// more math/texture instructions allowed.
// Not supported on DX11 feature level 9.x GPUs (e.g. most Windows Phone devices).

#pragma target 4.0
// DX11 shader model 4.0.
// Not supported on DX9, DX11 9.x (WinPhone), OpenGL ES 2.0/3.0/3.1, Metal.
// Supported on DX11+, OpenGL 3.2+, OpenGL ES 3.1+AEP, PS4/XB1 consoles.
// Has geometry shaders and everything that es3.0 target has.

pragma target gl4.1
// OpenGL 4.1 capabilities (DX11 SM5.0 on D3D platforms, just without compute shaders).
// This is basically the highest OpenGL level supported by Macs.
// Not supported on DX9, DX11 before SM5.0, OpenGL before 4.1, OpenGL ES 2.0/3.0/3.1, Metal.
// Supported on DX11+ SM5.0, OpenGL 4.1+, OpenGL ES 3.1+AEP, PS4/XB1 consoles.

#pragma target 5.0
// DX11 shader model 5.0.
// Not supported on DX9, DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0/3.1, Metal.
// Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1+AEP, PS4/XB1 consoles.

#pragma target es3.0
// OpenGL ES 3.0 capabilities (DX10 SM4.0 on D3D platforms, just without geometry shaders).
// Not supported on DX9, DX11 9.x (WinPhone), OpenGL ES 2.0.
// Supported on DX11+, OpenGL 3.2+, OpenGL ES 3+, Metal, PS4/XB1 consoles.
// Native integer operations in shaders, etc.

#pragma target es3.1
// OpenGL ES 3.1 capabilities (DX11 SM5.0 on D3D platforms, just without tessellation shaders).
// Not supported on DX9, DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0.
// Not yet supported on Metal.
// Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1, PS4/XB1 consoles.
// Has compute shaders, random access texture writes, atomics etc. No geometry or tessellation shaders.
#pragma only_renderers space separated names
// - compile shader only for given renderers.
// By default shaders are compiled for all renderers.

#pragma exclude_renderers space separated names
//  - do not compile shader for given renderers. 
// By default shaders are compiled for all renderers.

Types of Rendering platforms
d3d9 - Direct3D 9.
d3d11 - Direct3D 11/12.
glcore - OpenGL 3.x/4.x.

gles - OpenGL ES 2.0.
gles3 - OpenGL ES 3.x.
metal - iOS/Mac Metal.

d3d11_9x - Direct3D 11 9.x feature level, as commonly used on WSA/WP8 platforms.
xbox360 - Xbox 360.
xboxone - Xbox One.
ps3 - PlayStation 3.
ps4 - PlayStation 4.
psp2 - PlayStation Vita.
n3ds - Nintendo 3DS.
wiiu - Nintendo Wii U.
Rendering.GraphicsDeviceType gfx_dev_type = SystemInfo.graphicsDeviceType;

print( SystemInfo.graphicsDeviceVersion );

Notes of Tegra X1, K1

Tegra X1

CPU
  • 8 CPUコア, 64-bit ARM® CPU
  • 4x Cortex-A57, L2 2MB;
  • 4x Cortex-A53, L2 512KB
GPU
  • NVIDIA Maxwell
  • SM : 2
  • CUDA コア : 256
  • FP32 : 512
  • FP16 : 1024
  • テクスチャユニット : 16
  • ROP : 16
  • テクスチャフィル : 16GT/sec
  • クロック 1.6GHz
  • メモリ帯域 : 25.6GB/sec
  • L2 : 256KB
  • Z-Cull : 256 pixel/sec
  • Raster : 16pixel/ clock
  • Texture : 16bilinear / clock
  • ZROP : 128 サンプル / clock
  • DX-12, OpenGL 4.5, NVIDIA CUDA®, OpenGL ES 3.1, AEP, and Vulkan
メモリ
  • ?
ディスプレイ
    • 4K x 2K @60 Hz
    • 1080p @120 Hz

Tegra K1

  • CPU
    • NVIDIA 4-Plus-1™ Quad-Core ARM Cortex-A15 "r3"
    • L2 2MB(32bit)
    • Max 2.3GHz
GPU
  • NVIDIA® Kepler
  • SM : 1
  • CUDA コア : 192
  • FP32 : 365
  • FP16 : 365
  • テクスチャユニット : 8
  • ROP : 4
  • テクスチャフィル : 7.9GT/sec
  • クロック 930MHz
  • メモリ帯域 : 25.6GB/sec -> 424.96 (MB/frame)
  • L2 : 128KB
  • Z-Cull : 256 pixel/sec
  • Raster : 4 pixel/ clock
  • Texture : 8 bilinear / clock
  • ZROP : 64 サンプル / clock
Memory
  • DDR3L and LPDDR3
  • Max 8GB
Display

Notes of MackBook Air (Early 2014)

MackBook Air 13 inch(Early 2014)

MacBook Air 13 inch

git のメモ

無視リスト

.gitignore
#ルートから見たこのディレクトリは無視
/Library
/Temp

# 無視の例外のファイル
hoge_piyo_special.html

# 指定したファイルは無視
hoge_piyo.html

# この拡張子のものは無視
*.csproj
*.sln

# この名前のディレクトリは無視
HogeIgnoreDir/
SourceTree のグローバル無視リスト
  • SourceTree -> ツール メニュー -> オプション -> Git -> グローバル無視リスト
  • C:\Users\Admin\Documents\gitignore_global.txt

f:id:gregory-igehy:20160803011017p:plain

#ignore thumbnails created by windows
Thumbs.db

#Ignore files build by Visual Studio
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
*.dll
*.lib
*.sbr

用語

マージ関係
  • Already up-to-data: ローカルリポジトリとリモートリポジトリの環境が同じなので, マージの必要がない
  • Fast Forward : ローカルリポジトリの方がリモートリポジトリより古いので, ローカルリポジトリを更新( Fast Forward 状態: 他の人よりも先に変更をコミットして, マージや競合が起きない状態)
  • Auto Merge : 自動でマージできた
  • Conflict : コンフリクトが発生
操作
  • フェッチ : リモートリポジトリの最新状態を取得する
  • フォーク : 自分のアカウント用にリモートリポジトリを複製する
  • プルリクエスト : フォークしたリポジトリに変更を加えた後に, 元のリポジトリに対して変更を入れてもらうリクエストをすること
  • ステージング : コミットするために変更作業をしたファイルはステージングに移動する
  • チェックアウト : 作業対象のブランチを切り替えること, HEAD が指すブランチを変更すること
  • リセット(Reset) : ローカルのブランチが指すコミットを変更して, 元の状態に戻すこと
  • 打ち消し(Revert) : ある特定のコミットをなかったことにすること
  • 破棄(reset) : 自分の変更を破棄すること
リポジトリ
その他
  • ハンク(Hunk) : ファイル内の変更箇所の単位
  • Blame : 任意の変更箇所を行単位で履歴を追跡すること

autocrlf

.gitconfig

  • C:\Users\ユーザ名\.gitconfig
# コミット時に CRLF -> LF. チェックアウト時に LF -> CRLF.
autocrlf = true

スタッシュ

  • 作業途中の状態を一時退避して, 割り込み作業を開始する
  • 後で作業状態に戻せる
  1. ローカルを変更した状態で SourceTree のスタッシュを選択する
  2. スタッシュを適用したい場合は太字の「スタッシュ」を右クリックして, 適用を選ぶ
  3. マージが発生したときには, Auto Merge でマージしてくれる

Git Flow

  • Develop ブランチ : 開発用.これには他のブランチの作業をマージする. これに対して直接コミットはしない.
  • feature ブランチ : ひとつ の作業単位に該当するブランチ. 1 タスクごとにブランチを作成する
  • release ブランチ : 公開の準備のためのブランチ. Develop から派生する. リリース準備になるとリリースタグをつけて, master ブランチにマージする
  • master ブランチ : 公開されているバージョンを管理するブランチ. これに対するコミットはしない

Git Flow : その2 メモ

  • メインブランチ
    • master : リリースするためのブランチ. タグ付けを行う
    • develop : 開発用のブランチ, リリース前の最新バージョン
  • サポートブランチ
    • feature : develop から派生. 特定の機能の開発用
    • release : develop から派生. リリースのための準備をするブランチ
    • hotfix : リリース前の製品のバグ修正用の緊急ブランチ. master から直接派生. master にマージしてタグを打つ

github-flow

  • master は全てリリース可能
  • 新しい機能を追加する場合は master からブランチを作る
  • 作ったブランチはローカルマシンにコミットして, リモートリポジトリにも同じ名前のブランチとして定期的に push する
  • 開発が完了したら, mater へ Pull Request を送る
  • Pull Request がレビューされたら master にマージする

チーム開発実践入門メモ

まずい状況

  • X : 別名フォルダでブランチを管理する
    • ブランチやタグの機能が活用できていない.
  • X : メールでのタスク管理
    • ステータスの管理ができない
    • 一覧性や検索に弱い
  • X : 起動するまでバグに気づかない, リファクタリングしにくい
    • 自動テスト, CI

3 種の神器

バージョン管理

歴史
  • 1990 : CVS
  • 1995 : Perforce
  • 2000 : svn
  • 2005 : git
衝突の解決方式
  • ロックモデル
    • Perforce
  • マージモデル
リビジョン
  • ファイルベース
    • CVS, Perforce
  • チェンジセットベース
CVS
  • X : リビジョンがファイルベース
  • X : ブランチをメインラインへマージする作業が困難
Subversion
  • O : チェンジセット
  • X : ブランチをメインラインへマージする作業が困難
git
  • O : ネットワークを介さずに作業ができるため, コマンドが高速
  • O : コミット, ブランチ, マージのコストが低い

チケット管理

まずい状況
  • X : 紙の管理だとスピードが出ない, 情報共有にも向かない
  • X : Excel だと排他制御に弱い
チケット駆動開発
  • チケット管理システムを使って, チケットを中心とした開発フロー
  • チケットのないコミットは禁止
  • コミットログにチケット番号を入れる
  • チケット番号にはコミットログの番号を入れる
チケット管理システム
用語
  • エピック
    • 大きな要望, 部署横断の課題
    • 担当者 : 複数, 非エンジニア
  • ストーリー
    • 具体的な要望, 機能要求や使用に近いレベル
    • 顧客に届ける価値を表す
    • 担当者 : 複数 or 単独
  • タスク
    • 実作業
    • 担当者は単独
  • バグ, 障害対応, 問い合わせ
    • タスクに近い
    • 担当者は単独

CI

運用
  • ビルドが壊れたら, 直るまでコミット禁止

用語

  • デグレード
    • 機能追加やバグ修正によって, 以前まで実現できていた別の機能が動かなくなったり, 動作が遅くなる現象
  • インテグレーション
    • 各人が作業した成果物を一箇所に統合すること
  • スプリント
  • Scrum
    • スプリントごとに成果物を作り出し, レビュー, フィードバックして次のスプリントの作業に反映する
  • テスト駆動開発(TDD)フレームワーク
    • テストコードを書いてから, アプリケーションコードを書くこと
  • 振る舞い駆動開発(BDD)フレームワーク
    • 要求仕様を自然言語で書いてから最初のコードを自動生成する
  • デプロイ
    • 開発したソースコードを利用可能な状態でサーバに配布すること, システムを利用可能な状態にすること
    • 前提条件: フィードバックを受け取って, 反映するプロセスが重要
  • 継続的デリバリー(CD)
    • いつでもリリース可能な状態を継続的に保持すること
  • リグレッションテスト