fix(rendering): preserve opaque building coverage under detail MSAA (#473)
This commit is contained in:
parent
d35ed1aece
commit
bf23673f3d
7 changed files with 387 additions and 46 deletions
|
|
@ -58,9 +58,10 @@ public sealed unsafe partial class WbDrawDispatcher
|
|||
/// <summary>
|
||||
/// The four pipeline buckets a translucency kind resolves to, independent
|
||||
/// of any live <see cref="MeshPipelineSet"/> instance. <see cref="AlphaToCoverage"/>
|
||||
/// selects between <c>Opaque</c> and <c>OpaqueAlphaToCoverage</c> uniformly
|
||||
/// for the whole submission — it never varies per command — so merge-run
|
||||
/// legality only needs to know WHICH bucket a command falls in, not which
|
||||
/// selects between <c>Opaque</c> and <c>OpaqueAlphaToCoverage</c> for the
|
||||
/// default opaque bucket. A solo detail-category command may then select
|
||||
/// its exact material pipeline (including non-A2C Opaque), so merge-run
|
||||
/// legality needs the bucket plus the existing detail boundary, not the
|
||||
/// concrete <see cref="IGpuPipeline"/> that resolves to. That is what lets
|
||||
/// <see cref="BuildOrderedMergeRuns"/> stay pure CPU logic, testable
|
||||
/// without a live GPU device — the same separation
|
||||
|
|
|
|||
|
|
@ -858,7 +858,7 @@ public sealed unsafe partial class WbDrawDispatcher
|
|||
RetailSetSurfaceMaterialState material,
|
||||
IGpuPipeline opaquePipeline) => material.Blend switch
|
||||
{
|
||||
RetailSetSurfaceBlend.Opaque => opaquePipeline,
|
||||
RetailSetSurfaceBlend.Opaque => pipelines.Opaque,
|
||||
RetailSetSurfaceBlend.StraightAlpha => material.AlphaTestEnabled
|
||||
? pipelines.AlphaBlendDepthWrite
|
||||
: pipelines.AlphaBlend,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue