static_batching
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
static_batching [2021/04/30 17:17] – 151.227.181.11 | static_batching [2025/01/15 04:35] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 17: | Line 17: | ||
Instead, the performance comes from issuing fewer material / mesh change state operations (in OpenGL at least). In a lot of ways, this ends up being more similar to SRP [[Dynamic Batching]]. | Instead, the performance comes from issuing fewer material / mesh change state operations (in OpenGL at least). In a lot of ways, this ends up being more similar to SRP [[Dynamic Batching]]. | ||
- | Mobile | + | Static batching is done at build-time, so mobile |
==== Lightmap UV Coordinates ==== | ==== Lightmap UV Coordinates ==== | ||
Line 23: | Line 23: | ||
The lightmap coordinates from [[lightingdataasset|Lighting Data Asset]] are baked into the Combined Mesh UV coordinates when the scene loads((I think this also happens **during** standalone build, not at runtime, but I'm not sure)). Afterwards, querying '' | The lightmap coordinates from [[lightingdataasset|Lighting Data Asset]] are baked into the Combined Mesh UV coordinates when the scene loads((I think this also happens **during** standalone build, not at runtime, but I'm not sure)). Afterwards, querying '' | ||
+ | Static batching can actually work with manually provided lightmap scale/ | ||
+ | |||
+ | ===== Batching and MaterialPropertyBlocks ===== | ||
+ | |||
+ | Static and SRP batching is incompatible with MaterialPropertyBlocks, | ||
+ | |||
+ | This is the data sent by the SRP batcher for each draw call: | ||
+ | |||
+ | {{ :: | ||
+ | |||
+ | This data is efficiently managed by the engine and uploaded to the GPU as fast as Unity can. The idea is to abuse some of these built-in values to pass custom data. Good candidates are '' | ||
+ | |||
+ | An example, when using SRP batching: | ||
+ | |||
+ | <code csharp> | ||
+ | renderer.realtimeLightmapIndex = 0; // forces " | ||
+ | renderer.realtimeLightmapScaleOffset = ...; // Vector4 of custom data | ||
+ | |||
+ | // For custom SRPs: | ||
+ | // (Only relevant for custom SRPs; in existing RPs it should likely just work as is, as they all support lightmapping in the main pass) | ||
+ | drawingSettings.perObjectData = ...; // PerObjectData.Lightmaps or otherStuffYouNeed; | ||
+ | </ | ||
+ | |||
+ | On the GPU you should have a '' |
static_batching.1619803058.txt.gz · Last modified: 2025/01/15 04:35 (external edit)