
1)sRGBのテクスチャチェックに関する疑問
2)ライティングをオンにすると、メッシュ数が増える
3)UGUI Imageの材質属性を修正する質問
4)UniWebViewインターフェイスがUnityインターフェイスの後に表示されるのはどすればよいのか
5)TimelineのInternal_CreatePlayableはコストが高い
Rendering
Q:UWAある回答を見つけました(中国語注意):
https://answer.uwa4d.com/question/5bd1724fae74300ab0497bed
結論は次のとおりです。
linear space + gamma texture、sRGBを選択します
linear space + no gamma texture、sRGBを選択しませんhttps://answer.uwa4d.com/question/5bd1724fae74300ab0497bed
Gamma Spaceでは、sRGBを選択することは何の影響もないようですが。
Player Settingのcolor space設定標識によってインポートされた画像が、Gamma Spaceで作成されたのかLinear Spaceで作成されたのかについて、ドキュメントでは明確ではありません。もう少し説明してくれませんか。
ここでのディスカッションによると:https://forum.unity.com/threads/confusion-about-gamma-vs-linear.496053、sRGBが選択されている場合、Unityはgamma逆補正を行います。つまり、tex2Dからのvalueはbe pow(origin_color_value、2.2)、ここでgamma値は2.2と想定され、fragではRチャネルの値が逆補正され、heatmapのuの中央値は約0.5になります。それなら、上記のディスカッションで最初のheatmapが示したようになりますが、実際には2番目のheatmapのように示しています。
colorの代わりにcolorの値をdataとして使っているからだと言われていますが、やはり納得できません。dataでもcolorでもすべて数字であり、数字の比較には間違いがありませんから。
A1:確かにGamma Spaceでは、sRGBを選択することは何の影響もないようですが。
Linear Spaceで、sRGBが選択されている場合、UnityはRemove Gamma Correctionをします。この場合、図の値は0.5階調値、つまりu = 0.5の列の階調値です。次の図に示すように、Remove Gamma Correctionすると、取得される値は0.25になります。
X軸は光の強度を表し、Y軸はグレー値を表します。
青い線のY値は、人間の目の階調、視覚的な階調値を表します。赤い線は、光の強度に比例する物理的な空間の実際の階調値を表します。
Photoのグラデーション図でu=0.5の列の階調値は0.5で、これは視覚的な階調値です。Remove Gamma Correctionの後、実際の階調値は0.25になります。Fragment Shaderの計算に参加します。したがって、2番目のheat mapが表示されます。
A2:この記事を参照できます:https://developer.nvidia.com/gpugems/gpugems3/part-iv-image-effects/chapter-24-importance-being-linear
個人的な理解です。通常の状況では、私たちが見る画像は「モニタースペース」にあり、画像自体がGammaCorrectionをした(つまり、元の値は 1 /2.2乗の操作をしました。)ため、モニターに表示される画像の色は正常です。このような画像の場合、非線形として理解できます。 Unityが線形空間を選択した後、そのような非線形画像の場合、正しくレンダリングするにはsRGBを選択する必要があります。画像のsRGBが選択されると、メモリ内の形式は、以下に示すように、ETC2_EAC_RGBA8_SRGBの形式になります(画像がETC2 8ビットの圧縮形式を選択すると仮定します)。
sRGBが選択されていない場合、以下に示すように、ETC2_RGB8_UNORM形式になります。
この_SRGBサフィックス形式の場合、GPUがテクスチャサンプリングを実行すると、GamaCorrectionが自動的に削除されます。つまり、値は2.2乗をしますが、元のデータは変更されません。Gamma空間では、sRGBが選択されているかどうかに関係なく、形式はETC2_RGB8_UNORMです。
問題主の質問について、Gamma空間では、レンダリングの結果は平均的な4色になります。これは、Gamma空間ではGammaCorrectionが削除されないためです。つまり、この「非線形画像」はu= 0.5の場合(uはテクスチャuv座標)、テクスチャのdata値= 0.5、Linear空間になるとdataは変化しません。相変わらずu = 0.5の場合に、data= 0.5になります。しかし、sRGBを選択した後、テクスチャサンプリングを実行する場合、GPUは値に対して2.2乗の操作をし、約0.25になります。したがって、u <= 0.5の場合、color.r <= 0.25になります。Shader がcolor.r <0.25を計算すると、赤になります。つまりu <= 0. 5の場合、すべて赤なので、色の半分が赤です。
Rendering
Q:Unityによって表示される面(メッシュ)数は、このフレームでGPUにアップロードされたすべての頂点データによって決定されるため、GPUがこの部分をキャッシュしないのはなぜですか。ライティングをオンにすると、面数が増えるため、モデルの頂点データを複数回アップロードすることになります。この部分をキャッシュすると、パフォーマンスが大幅に向上しませんか。GPUがこのキャッシュを実行できない場合、GPUのキャッシュが小さすぎてそのようなスペースがないことを意味しますか、それともGPUがキャッシュする部分を確認できないことを意味しますか。エンジンコードを変更すると、プロジェクト用にキャッシュできます。
A:ライト自体のシェーディングは、DrawCallと面数には影響しません。リアルタイムシャドウは、シャドウ用の深度マップをレンダリングする必要があります。これは、別の視点からレンダリングするのと同じであり、データは現在のカメラとは異なります。 FrameDebuggerを開いて、レンダリングプロセス全体を確認できます。
UGUI
Q:UGUIのImageはMaterialPropertyBlockを設定することでマテリアルプロパティを変更できますか。設定方法はありますか。
A:UGUIはマテリアルブロックを使用しません。以下を参照してください。
https://forum.unity.com/threads/big-problem-with-locking-materialpropertyblock-for-ui-image.506941
UGUI
Q:Android側にWebページを表示するプラグインUniWebViewがあります。デフォルトでは、Unityインターフェースの上位層に表示され、Unityのすべての表示をブロックします。 Androidのネイティブインターフェイスをバックグラウンドにし、UnityのUIをフォアグラウンドにし、Unityのバックグラウンド自体を透明にする方法を教えてください。
A:UniWebViewをUnityインターフェイスの背後で実行できるようにするために、公式ドキュメントにはダメだと記載されています。
https://docs.uniwebview.com/guide/faq.html
Unityの背景の透明度の維持に関しては、Player Settingsに以下のようなオプションがあります。
Playable
Q:特殊効果はTimelineを使用して作成されています。最近のパフォーマンステストで、Internal_CreatePlayableメソッドには多くのコストがあることがわかりましたが、トラックが1つしかないなのに、このコストが何に関連していますか?
同じオブジェクトをPCにロードし、Internal_CreatePlayableに18.55ミリ秒かかり、次にPCにCubeを作成してTimeline効果を追加してから、Internal_CreatePlayableに約4ミリ秒かかるようになります。
A:Timlineの最初のCreatePlayableは時間がかかります。こちらの簡単なTimelineアセットでも、初めて500ミリ秒以上かかります。
ただし、シーンのロードにCreatePlayableステップを配置することで、ゲーム中のラグを回避できます。Timelineアセットを読み込んだ後、PlayableDirector.RebuildGraphを呼び出すと、Prewarmと同等のCreatePlayableが実行されます。その後、Play()を呼び出しても、CreatePlayableは実行されません。RebuildGraphを呼び出しても、キャッシュがあるため、高い時間コストも発生しません。
次の図は、RebuildGraphを初めて呼び出すのにかかる時間を示しています。
次の図は、RebuildGraphを2回呼び出すのにかかる時間を示しています。
UWA公式サイト:https://jp.uwa4d.com
UWA公式ブログ:https://blog.jp.uwa4d.com
UWA公式Q&Aコミュニティ(中国語注意):https://answer.uwa4d.com
これも興味あるかも
-
原理から応用まで ゲームでの動的解像度
January 4, 2023 -
Unityゲームの使用メモリを最適化しよう
December 21, 2022 -
ASTC テクスチャ圧縮形式の紹介
December 14, 2022