Search Issue Tracker

By Design

Votes

0

Found in

2020.1.17f1

2020.2.0a8

Issue ID

1307714

Regression

Yes

BatchRendererGroup doesn't render GameObjects with URP Materials when SRP Batcher is enabled

Graphics - LowLevel

-

How to reproduce:
1. Open the user's attached "BatchTest.zip" project
2. Open the "SampleScene" Scene
3. Observe the Game view

Expected result: GameObject is rendered with BatchRendererGroup and SRP Batcher enabled
Actual result: GameObject is not rendered with BatchRendererGroup and SRP Batcher enabled

Reproducible with: 2020.2.0a8, 2020.2.3f1
Not reproducible with: 2019.4.19f1, 2020.2.0a4
Could not test with: 2020.2.0a5, 2020.2.0a7 (Crashes on open)

Note:
- The issue is not reproducible if the SRP Batcher is disabled

  1. Resolution Note:

    BatchRendererGroup has inherit limitations. It only correctly supports ShaderGraph shaders when using the Hybrid Renderer V1 API set. To avoid graphics corruption and crashes on several platforms, we added checks for incorrect API usage. Now if you try to render objects that don't use ShaderGraph, the API will ignore them instead of potentially corrupting the graphics or crashing the GPU.

    Please refer to this documentation when using BatchRendererGroup. The "Setting up shaders for Hybrid Renderer V1" section has instructions how to setup shaders so that they are compatible with the BatchRendererGroup (V1) API:

    https://docs.unity3d.com/Packages/com.unity.rendering.hybrid@0.11/manual/index.html

Comments (2)

  1. XRA

    Feb 02, 2021 03:47

    +1 what Arycama said

  2. Arycama

    Jan 29, 2021 09:14

    Is this a joke?

    I have used BatchRendererGroup since it was first introduced, to render Oceans, Foliage, Decals and other custom systems.

    It has been a great replacement for Graphics.DrawMesh, which needs to be called every frame and does not give you control over culling, or how the draw calls are batched.

    BatchRendererGroup on the other hand gives you full control over culling, batching, instancing, and custom data that can be passed to the rendering pipeline.

    All of this is now completely useless unless I stop upgrading any of my projects to 2020.2.

    A replacement for Graphics.DrawMesh is long overdue, see: https://forum.unity.com/threads/graphics-drawmesh-drawmeshinstanced-fundamentally-bottlenecked-by-the-cpu.429120/

    There is nothing in the BatchRendererGroup documentation about Hybrid Renderer, and seeing as Hybrid Renderer is a package, it makes no sense that an internal engine component (BatchRendererGroup) has a dependency on a package.

    Surely you are aware that there are tons of custom rendering systems on the asset store, most of which are forced to deal with Graphics.DrawMesh and it's severe limitations requiring numerous workarounds and band-aid solutions, and has less than ideal performance characteristics?

    Stop taking away API features without providing a replacement. It is extremely frustrating for developers and results in large amounts of work being wasted.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.