プログラミング GenerateMipMaps (DirectXTex) の罠 DirectXTexに用意されているミップマップを作成する関数 GenerateMipMaps の挙動で振り回された点があります。今回はそれをこのブログで共有します。どのようなことが起こったのか最初に観測できた症状が、ミップマップを生成した... 2025.02.11 プログラミング
プログラミング IBLによる間接光を考慮したレンダリングの流れ (未完 前回に続き、単純なランバート+フォンシェーディングからステップアップして、PBR のレンダリング方法を勉強しています。直接光を対象とした計算については、所定の数式や各種テクスチャマップを使えば比較的スムーズに正しいとされる描画が実現できます... 2024.12.01 プログラミング
プログラミング 今時のレンダリングに近づけるために そろそろグラフィックスAPIのレイヤーだけでなく、今時の見た目が描画できるように「レンダリング」をやっていかないと思っていました。昔々は、DirectX や OpenGLを使って、簡単なシェーダーを用意して、ランバートライティングやフォンシ... 2024.11.26 プログラミング
プログラミング シェーダーの要素アライメントの謎 シェーダーコードの作成で、よく躓きがちなのはバッファの要素のアライメントがずれる、という点でしょう。たとえばユニフォームバッファで要素を追加して、C++側とGLSL側、他方でその修正を忘れるとすぐにおかしな状態に突入します。これはまだ気付け... 2024.11.09 プログラミング
プログラミング RenderDocでシェーダーデバッグ (Vulkan) シェーダーのデバッグはなかなか大変です。色情報を出力して目視確認というのは基本ですが、ソースコードレベルでステップ実行したいこともあります。 今回 RenderDoc で Vulkan 向けのシェーダーをデバッグできそうだったので紹介します... 2024.10.14 プログラミング
プログラミング RenderDocを使ってブラウザ上のWebGLをデバッグする (2024年版) ブラウザで動作するWebGLを使ったアプリケーションもよく見かけるようになりました。ライブラリやフレームワークも充実して手軽に作ることができるというのも魅力だと思います。その中で、描画処理のデバッグについて困ることがあるのでは?と思いました... 2024.07.23 プログラミング
プログラミング 絵文字あり世代のUnicode事情🧑💻 Unicodeは、文字やその符号化方式を定義する規格です。具体的には、文字集合と文字符号化方式の二つに分けられます。文字集合は、文字とそれに対応するコードポイントの対応表です。一方、文字符号化方式はUTF-8、UTF-16、UTF-32など... 2024.07.12 プログラミング
ハードウェア Raspberry Pi 5とNeoPixel (WS2812B) 本記事は前回記事の続報となります。 Raspberry Pi 5ではGPIOへのアクセスがRP1チップ経由になったことで、 NeoPixel が使えないという話題があるようです。以下の Issue で現時点(2024/07時点)では議論して... 2024.07.07 ハードウェアプログラミング
ハードウェア WS2812BのLEDパネル WS2812Bはチップ内蔵フルカラーLEDです。このLEDを使ったNeoPixelという商品シリーズでAdafruit さんが様々なタイプで販売しています。電子工作で使うにも使いやすくて定番のフルカラーLEDかなと思います。手元で試してみた... 2024.07.06 ハードウェアプログラミング
インフラストラクチャ WindowsからラズパイへRemote-SSH 私は、Windows の VSCode を使って、ラズパイ (Raspberry Pi) へ接続し、操作をするということをよくやります。ただ初期の環境設定を手抜きすると、接続のたびにパスワードの要求が発生して手間が掛かります。頻繁にこの環境... 2024.06.22 インフラストラクチャプログラミング
プログラミング RaspberryPiで新しいMesa3Dを使う 先日 Raspberry Pi にも VK_KHR_dynamic_rendering が使えるようになるというニュースがありました。みたところ、Mesa 24.1 に含まれる V3DV ドライバで対応とのことです。しかし、早く試してみたい... 2024.03.30 プログラミング
プログラミング RenderDoc GPUカウンター RenderDoc で GPU カウンター(ハードウェアカウンタ-) の値を見ることができます。NVIDIA GPUを使用する場合では、準備が必要なので、その手順を説明します。準備NVIDIA GPUを使う場合、GPUカウンタ-へのアクセス... 2024.01.08 プログラミング
プログラミング リモートで RenderDoc を使う RenderDoc はグラフィックスのデバッグ支援ツールです。オープンソースとして開発されており、多くのグラフィックスAPIに対応しています。OpenGL や DirectX11、DirectX12 や Vulkan などを対象として使える... 2024.01.01 プログラミング
プログラミング Vulkan: シェーダーメイン関数を指定する Vulkan を使用しており、シェーダーソースコードを作成しているとき、メイン関数(エントリーポイント)をちょっと変えたいことがあると思います。例えば、共通コードが多めで、メイン関数からの呼び出し部が少しだけ変化するような場合です。前提や背... 2023.12.23 プログラミング
プログラミング VK_EXT_full_screen_exclusiveを使う はじめにVulkanにはVK_EXT_full_screen_exclusive拡張機能というものがあり、これを使うとコンポジタを迂回しての描画が可能となります。この拡張機能が提案されたのが 2019年くらいだったので、今更ではありますが、... 2023.10.04 プログラミング