首頁>Game>source

我正在使用標準渲染管道和 unity_ObjectToWorld 着色器中用於某些計算的變數.在啟用動態批處理之後,這些計算就被打破了.看来 unity_ObjectToWorld 批處理物件時將其設置為預設值.是設計使然吗? 我没有在文件中找到任何內容。

最新回復
  • 5月前
    1 #

    這已在手册中进行了說明,其中描述了動態和靜態批處理:

    Dynamic batching works by transforming all GameObject vertices into world space 在CPU上

    Internally, static batching works by transforming the static GameObjects into world space 並為其建立一个共享的頂點和索引緩衝區

    在這裏:

    Some shaders (mostly ones that do object-space vertex deformations) do not work when Draw Call Batching is used – that’s because batching transforms all geometry into world space ,因此"物件空間"丢失了。

    自然地,由於批處理中的所有頂點在渲染之前都已預先轉換為CPU侧的世界空間,因此 仅仅是身份矩陣.在GPU着色器中没有其他工作要做,並且由於批處理中的物件可能来自多个不同的物件空間,因此,這个變數無法保留有關所有物件的資訊。

    我们在此之前有關於此主题的一些常见問题解答,並暗示了如何针對需要物件空間資料的着色器解決此問题,而不会完全放棄批處理。

    unity_ObjectToWorld

  • graphics:Opengl在500行中指向三角形問题
  • animation:匯入到Unity中時,已裝配的Blender模型變形