Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader

Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話 / Line drawing algorithm using fragment shader

sotanmochi

July 11, 2019
Tweet

More Decks by sotanmochi

Other Decks in Programming

Transcript

  1. 一般的な手法との比較 一般的な線分描画アルゴリズム  始点から終点に向かって順次処理してピクセルを塗りつぶしていくアルゴリズム  → スクリプトで実装してCPUで順次処理    テクスチャ解像度が大きくなると計算負荷が増えてFPSが低下する(した)  ※ 順次処理して塗りつぶしていく部分だけの負荷が高いのではなく、Texture2D.SetPixels32()や   

    Texture2D.Apply()の処理負荷も合わせるとFPSが低下すると考えられる 今回実装した線分描画アルゴリズム  ピクセル単位で並列に処理して塗りつぶしていくアルゴリズム  → シェーダーで実装してGPUで並列処理    GPUで高速に処理することでピクセル数が増えてもFPSを低下させない  ※ 1ピクセルあたりの計算式は複雑になっているが、    GPUで並列処理することによって全体のスループットが向上する 7 2019/07 Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話
  2. 一般的な手法との比較 一般的な線分描画アルゴリズム  始点から終点に向かって順次処理してピクセルを塗りつぶしていくアルゴリズム  → スクリプトで実装してCPUで順次処理    テクスチャ解像度が大きくなると計算負荷が増えてFPSが低下する(した)  ※ 順次処理して塗りつぶしていく部分だけの負荷が高いのではなく、Texture2D.SetPixels32()や   

    Texture2D.Apply()の処理負荷も合わせるとFPSが低下すると考えられる 今回実装した線分描画アルゴリズム  ピクセル単位で並列に処理して塗りつぶしていくアルゴリズム  → シェーダーで実装してGPUで並列処理    GPUで高速に処理することでピクセル数が増えてもFPSを低下させない  ※ 1ピクセルあたりの計算式は複雑になっているが、    GPUで並列処理することによって全体のスループットが向上する 21 2019/07 Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話
  3. 条件2の判定方法の導出 p’ は p - a を直線ABに正射影したベクトルなので、 正射影の公式より よって、 35

    2019/07 Unityでテクスチャにお絵描きするための線分描画アルゴリズムの話
  4. END