2018-01-01から1年間の記事一覧
GC任せにしてbyte配列何度も確保したくないし、Spanが来るから積極的に部分配列を使いたい。 byteに対して標準Cライブラリのmallocみたいなことできないかなーとほんのり思っていました。 mallocぽいというのはこういう感じですね。フラグメンテーション上等…
エフェクト統一シェーダーがあると捗るよね の記事を読んで「よし、俺も統一シェーダ作るぞ!」と思って実際にやってみると、 シェーダのコードを#ifdefで切り刻むこと自体はそこまで大変ではないですが、 「エディタのほうはしんどそう」…と思っていました…
UnityのProfiler上ではGPUの細かいメトリクスはとれないので、描画負荷をはかるためには Androidなら各SoC向けのプロファイラ。iOSならInstrumentsを使って描画負荷を測ることになります。 自分は私物端末がSnapdragonなので、普段はSnapdragonProfilerを見…
RenderDoc神。 UnityEditor上でグラフィックがバグってて困ったときはまずFrameDebuggerでぱぱっと確認するわけですが、FrameDebuggerで原因をつき止められない場合はRenderDocが助けになります。 Visual Studioのグラフィック診断相当の機能が少ない手順で…
社内で圧縮テクスチャの話をしたのでブログでも少々。 DXT1からつらなる初期の圧縮テクスチャの系譜は4x4=16pxを1ブロックとして扱い 1ブロックあたりカラー(RGB)を64bit、すなわち64/16=4bpp (bit per pixel)としています。 これだとアルファがもてないので…
UnityEngine.UI.dllの中身はBitbucketにあります。誰でも読めて素晴らしみあります。 uGUIを理解するのにあたって個人的にとても大事だと思っているのは、UnityEngine.UI.CanvasUpdateRegistryクラスです。 こいつは何者なのかというと、ざっくり言ってしま…
サンプルの実用度はまるで無いのですが、uGUIの理解のために。 UnityEngine.UI.dllはC#で書かれたManagedなdllです。 一方、Canvas, CanvasGroup, CanvasRendererなどはネイティブコンポーネントであり、名前空間もUnityEngineに属します。 CanvasはUnityEng…
DrawCall Batching Unityは描画効率のために、複数のRendererの描画を一つに束ねることがあります。 これをバッチングといい、 どのRendererの描画をまとめるかを事前に指定する方式をstatic batching Materialの状況をみてUnityがよしなに描画を束ねるかど…