概要 Unityにはいくつかの特別なテクスチャがあり、これらのテクスチャは特定の目的のために予約されている。 つまり、シェーダー内で同じ名前のテクスチャを独自に宣言して使用することは推奨されない。 とくにURPやHDRPのようなSRPでsahderを作成する際に…
概要 Unity初心者の私がShaderの構造や関数のエントリーポイントについて調査したのでまとめる。 Shader ShaderLabやHLSLの用語説明などは、ページによくまとまっているので、以降は個人的に気になったC# ScriptからShaderへのデータの渡し方や関数のエント…
概要 Unity初心者の私がグラフィクスパイプラインの処理について調査したので、まとめたい。 モバイル端末での表示が関心事なので、ビルトインパイプラインとURP(Universal Render Pipeline)について調べてみた。 Unityでのグラフィクスパイプライン まずは…
概要 オブジェクトが途中から描画されない場合があった。 原因 Top Level ASの更新漏れ 詳細 Khronos Blog - The Khronos Group Inc に the triangles or axis-aligned bounding boxes (AABBs) とある通り、ray tracingのオブジェクトの範囲はboxで指定され…
結論 カメラーオブジェクトのベクトルとカメラータッチ位置をワールド座標に変換したベクトルの内積を計算し、1に近ければタッチしていると判定 補足 点と平面の距離を計算して、その距離が0に近ければ、なども考えたが、内積を考えるのが速そう。 Unityであ…
水面の反射 水面に反射する草を描画してみました 課題 反射の計算が重すぎて驚異の2fpsしか出ていない 水面の頂点をすべて保持しているので、コピーで済む部分はそのようにしたい offsetをもつようにするとか 水面の頂点の計算はCPUで行っているので、GPUで…
glTFモーフィング(アルファテストあり) アルファテストを用いて透明 or notを判定することにより、必要な部分だけを取り出してモーフィングアニメーションすることができた。 モデルの権利表記 https://sketchfab.com/3d-models/yard-grass-3a67e76decc849…
morphing glTFのモーフィングアニメーションを読み込み、androidで描画することができた。 モデルの権利表記 https://sketchfab.com/3d-models/yard-grass-3a67e76decc849c694c228eb590a9902 ライセンス:CC Atribution https://creativecommons.org/license…
glTFモデルのmorphing 前回の記事 aqoole-hateena.hatenablog.com からalphaがglTFファイルにあるalpha cutoffよりも小さい場合に、描画しない処理を追加したものがこちら。 モデルの権利表記 https://sketchfab.com/3d-models/yard-grass-3a67e76decc849c69…
Morphing morphingのアニメーションに挑戦してみた。 それっぽくはなっているが、、、合ってるのか? モデル https://sketchfab.com/3d-models/yard-grass-3a67e76decc849c694c228eb590a9902 ライセンス:CC Atribution https://creativecommons.org/license…
glTFでアニメーション colladaに引き続き、glTFでもアニメーションを行うことができた。 モデルの権利表記 配布元リポジトリ https://github.com/TheThinMatrix/OpenGL-AnimationUnlicense license https://unlicense.org/ glTFでanimationを行うときの注意…
glTFでアニメーション colladaに引き続き、glTFでもアニメーションを行うことができた。 モデルの権利表記 配布元リポジトリ https://github.com/TheThinMatrix/OpenGL-AnimationUnlicense license https://unlicense.org/ glTFでanimationを行うときの注意…
glTFでモデルの描画 joint情報を読み込み、静止モデルの描画をしてみた。 モデルの権利表記 配布元リポジトリ https://github.com/TheThinMatrix/OpenGL-AnimationUnlicense license https://unlicense.org/ glTFフォーマットの読み込み方 tiny glTFを用いて…
Animationの実装 今までの実装では時間の取得の仕方が間違っていた。 時間の表示を正常にするとコマ飛びすることなくアニメーションが表示された。 時間の取得方法 実装当初に色々調べた際に、あまり深く調べることなく以下のstack overflowのanswerをそのま…
compute shaderでanimation部分の計算 vertex shaderとfragment shaderを用いるのであれば、vertex shaderでanimation後の位置に更新した後fragment shaderで色を付ければよいと思うが、raytracing pipelineでレンダリングする場合にはどの時点で位置を計算…
アニメーション補間の実装 interpolation(補間)を実装してみた結果がこちら。 interpolationは 今のkey frame1(t1)を基にしたanimation行列を計算するときに、次のkey frame2(t2)のanimation行列も計算する。 key frame1による位置v1を計算する。 key frame2…
cowboy君に色を付けた 前回のcowboy君はおかしな色がついていたが、正常な色になるようにした。 方法の考察 前回はgeometryごとにvertexを作成していたので、vertexの数が少なく小メモリーとなっていたが、今回の方法ではインデックスバッファーに0から始ま…
Animationの描画 ようやく、本当にようやくanimationの描画に成功したので、まだまだ課題は山積しているが、現状のカウボーイ君を載せる。 課題 まず、ご覧の通りわかりやすい課題があり 補間がされていないのでカクカク カウボーイ君の色が変 の改善が必要…
Compute Shader ray tracingパイプラインのみでレンダリングしているとvertex shaderでのアニメーションの計算を行わないので、compute shaderでの計算方法を模索していた。 とりあえず、ソースデータからデスティネーションデータにデータをコピーするとこ…
colladaファイルの特徴まとめ 行列はrow majorで格納されている => VulkanやOpenGLで用いる場合にはtransposeなどを行い、column majorへの変換が必要 (実装方法によるが) > INV_BIND_MATRIXは使わなくてもよい collada ファイルのanimation プログラムを…
アニメーションの1ポーズのレンダリングに、ようやく成功した。 colladaファイルからモデルを読み込み、vulkanでレンダリングしている。 何カ月もかかり、本当に長かった。アニメーション用の座標変換などについても調べたので、これから記事にしたい。 それ…
Androidに表示した画面 colladaファイルからモデル情報を読み取り、その結果をそのまま表示した図 phoenix 1モデルの権利表記 This model was created by NORBERTO-3D https://sketchfab.com/3d-models/phoenix-bird-844ba0cf144a413ea92c779f18912042 LICEN…
対処法 プログラムでモデルをレンダリングしたい方向けの記事。 モデルはsketchfabというサイトでモデルをダウンロードしていることを想定。 sketchfab.com対処法としては fbxフォーマットでなくglTF 2.0のフォーマットでダウンロードする。その後glTF -> co…
概要 vulkan + ray tracingのチュートリアルのコードを読んだときに気になっていた、GL_EXT_nonuniform_qualifierについて仕様の調査を行う。 仕様書 以下のGitHubが仕様書のようだ。 GLSL/GL_EXT_nonuniform_qualifier.txt at master · KhronosGroup/GLSL ·…
概要 Vulkan + Ray Tracingのコードを書き始めたときから気になっていたGL_EXT_scalar_block_layoutの拡張機能について調べてみた。 GL_EXT_scalar_block_layoutについて 仕様書はこちら GLSL/GL_EXT_scalar_block_layout.txt at master · KhronosGroup/GLSL…
完成図 モデルのレンダリングだけでなく、キューブに反射するモデルも描けているところがray tracingポイントです。 123 前回からの変更点 調べてみると、Android 11からはandroid ndkが提供する画像デコーダライブラリが使える模様。 pngやjpegで描かれるテ…
モデルのレンダリング 21思ったのと違うが、stbi_loadが使えない影響でstbi_load_from_memoryにしているからだろうか? ただ部位ごとにはtextureで区切れているので、今はこれでよしとしようか。 ガラスで透過した絵が簡単に描けるところもray tracingの強み…
やりたいこと ray tracingパイプラインでモデルをレンダリングしたい。 モデル自体は描画されるが、うまく色がつかない。 上部のcubesはガラスをイメージし、透過できるようにしている。 モザイクのモデル stb_imageの工夫 pngなどの画像データはstb_imageの…
ray tracingでガラスのレンダリング ガラスキューブ1ガラスキューブ2ray tracingの真骨頂といえば、透過と反射だと(個人的には)思っていて、Androidでray tracingするからには、どこまで反射と屈折の回数を増やして計算できるのだろうと思っていた。 図の例…
まとめ 複数オブジェクトを描画してみようとしているが、cubesに色がつかないこんな感じ cubesに赤色がつかない 調べたこと descriptor setのindex buffersをbindするときに VUID-VkWriteDescriptorSet-dstArrayElement-00321のメッセージが出ている。 khron…