What does DX10.1 add vs. DX10 that makes such a big difference? [deferred shading]

I was asking myself the same question. Off the top of my head it could be useful to apply decals (bullet holes, blood splatter, etc.) to the G-Buffer. Maybe you want to completely overwrite the normal but blend the diffuse with the existing value in the G-Buffer or something similar. (In theory you'd probably really want to blend the normal too but you need programmable blending for that).
I guess, but even if all RTs had the same blend mode, you can still have individual alpha channel values to disable it on whichever channel you want. Decals are just a few pixels, too, so trying to save performance is rather fruitless (and I think some hardware even skips the framebuffer read when it can if the blend factor is zero or one).

I guess there are some corner cases where you need to add in one RT and lerp/multiply in another.
 
I guess, but even if all RTs had the same blend mode, you can still have individual alpha channel values to disable it on whichever channel you want.
Yeah I can't really think of too many uses for separate blend modes in deferred shading.

Incidentally the opposite is true: I sometimes find myself constrained by having to write an alpha value out for each render target, as it wastes a slow that could be used for data! With alpha-to-coverage you can work around this by writing alpha to a null RT0, and the real data to RT1+, but the same obviously does not work with alpha blending. It would be nice if alpha was (optionally) a special variable that feeds directly to the hardware (like writing depth, or choosing render targets for instance... SV_Alpha or something) since in many cases there's no need to actually store the alpha value resulting from the blending.
 
It would be nice if alpha was (optionally) a special variable that feeds directly to the hardware (like writing depth, or choosing render targets for instance... SV_Alpha or something) since in many cases there's no need to actually store the alpha value resulting from the blending.

Have you looked at “Dual Source Color Blending“?
 
How can deferred rendering take advantage of per-MRT blend modes?
Well, not sure for defferred rendering... but perhaps could be used when you render the shadow maps... MRT0=depth/sqDepth with no blending, MRT1=multiplicative/additive image projector for semitransparent object shadows
 
Well, not sure for defferred rendering... but perhaps could be used when you render the shadow maps... MRT0=depth/sqDepth with no blending, MRT1=multiplicative/additive image projector for semitransparent object shadows
Not entirely clear on your idea, but AFAICS you can do that with the same blend mode and simply use different alpha values per render target.
 
Back
Top