Unityでテクスチャにお絵描きするための線分描画アルゴリズム
はじめに
- テクスチャにお絵描きする(線を描く)ことができるアルゴリズムの備忘録
- 完全版はスライドを参照 speakerdeck.com
作ったもの
https://github.com/sotanmochi/SimpleDrawing-Unity
実装した線分描画アルゴリズムについて
- ピクセル単位で並列に処理して塗りつぶしていく
- シェーダーで実装してGPUで並列処理
- GPUで高速に処理することでピクセル数が増えてもFPSを低下させない
※ 1ピクセルあたりの計算式は複雑になっているが、GPUで並列処理することによって全体のスループットが向上する
実装の概要
- オブジェクトに対して「線を描け」と命令する(スクリプト)
- 色・UV座標などの値をシェーダーに渡してBlit命令を実行する(スクリプト)
- シェーダーはUV座標などの情報から塗るべき位置を判断して色をつけていく
線分描画アルゴリズム
- ベクトル方程式、連立1次方程式、点と直線の距離などを使った
- 詳細はスライドを参照
実装例