deferred rendering with masa

https://docs.nvidia.com/gameworks/content/gameworkslibrary/graphicssamples/d3d_samples/antialiaseddeferredrendering.htm

https://github.com/NVIDIAGameWorks/D3DSamples/tree/master/samples/DeferredShadingMSAA

{

  float3 worldNormal = normalize(pixel.worldNorm);

float viewDepth = pixel.viewDepth / 1000.0f;

float3 diffuse = bTextured > 0 ? texDiffuse.Sample(textureSampler, float2(1, 1) - pixel.uv).rgb : DiffuseColor;

float edge = coverage != 0xf;

result.fragment1 = float4(worldNormal, viewDepth);

result.fragment2 = float4(diffuse, edge);

result.fragment3 = coverage;

}

coverage这个方法我倒是看懂了 缺点是 mesh的边缘都会被标记 实际上这里可能不需要超采样

这是另外一个方法判断 normal detph的连续性

    if(UseDiscontinuity == 1)
        {
            float4 gBuf1 = texGBufferMS1.Load(pixel.pos.xy, 0);
            float4 gBuf2 = texGBufferMS2.Load(pixel.pos.xy, 0);

            float3 normal = gBuf1.xyz;
            float depth = gBuf1.w;
            float3 albedo = gBuf2.xyz;

            [unroll]
            for(int i = 1; i < SAMPLE_COUNT; i++)
            {
                float4 nextGBuf1 = texGBufferMS1.Load(pixel.pos.xy, i);
                float4 nextGBuf2 = texGBufferMS2.Load(pixel.pos.xy, i);

                float3 nextNormal = nextGBuf1.xyz;
                float nextDepth = nextGBuf1.w;
                float3 nextAlbedo = nextGBuf2.xyz;

                [branch]
                if(abs(depth - nextDepth) > 0.1f || abs(dot(abs(normal - nextNormal), float3(1, 1, 1))) > 0.1f || abs(dot(albedo - nextAlbedo, float3(1, 1, 1))) > 0.1f)
                {
                    clip(-0.5f);
                    return 0;
                }
            }
        }

一看就巨费 depth normal albedo大于某阈值就标记为complex pixle

用上述两种结果做光照

gbuffer 用msaa生成

但我总觉得我在哪还见过一篇 msaa+deferred的解决方案

msaa 的srv 用mstex.load(uv,sampleID) 放循环里

原文地址:https://www.cnblogs.com/minggoddess/p/10055349.html

时间: 2024-10-12 16:33:51

deferred rendering with masa的相关文章

Deferred Rendering(三)反锯齿和半透明问题

Deferred 框架下的AA 前面说过Deferred 框架下无法使用硬件AA,这句话不严谨: Deferred Shading在G-Buffer之后,物体几何信息全被抛弃了,导致后续每个像素都独立计算,所以不能使用硬件AA: 但是:Deferred Lighting,在Shading Pass阶段,物体会被再次渲染一遍,此时打开硬件MSAA,肯定是能用的(尽管光照部分取自lighting Pass阶段得到的texture,没能享受到AA,但对最终结果影响很小). 所以,总结来看,Deferr

Tutorial - Deferred Rendering Shadow Mapping 转

http://www.codinglabs.net/tutorial_opengl_deferred_rendering_shadow_mapping.aspx Tutorial - Deferred Rendering Shadow Mapping In this tutorial I will present the shadow mapping technique implemented in a deferred renderer. This tutorial will lean on

Forward Render VS Deferred Rendering

Forward Render 传统的渲染方式,你提供给显卡形状Mesh,它将其打散成一堆节点,接着经过一系列的变换和分割成为Fregment或者像素,在呈现在屏幕之前已经完成了所有的渲染处理. 这是相当线性的,每一个形状都会在生成完整图像之前经过流水线的每一个阶段. Deferred Rendering 中文称为延迟渲染,渲染的工作被放在最后,直到所有的形状到都完成了前面的工作,一旦所有需要的缓冲建好,就直接被读进一种着色算法中,合并在一起从而得出最后的结果. 这样,着色一个场景所需的计算和内存

[ZZ] Deferred Rendering and HDR

http://www.gamedev.net/topic/496785-deferred-rendering-and-hdr/ Quote: Original post by jstrohYeah I've been reading about people saying "oh you can only do it if the device supports fp16 texture blending" but it's pretty simple to just add to a

Deferred Rendering(二)G-Buffer的组织

先来看一张网上广为流传的<杀戮地带2>典型的Deferred Shading的G-Buffer组织: 这里补充解释下几个点: 不存Position,而由depth和屏幕像素坐标反推出来.參考:http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer/ Normal能够仅仅存两个分量,算法多种多样.float16 精度足矣.參考:http://aras-p.info/texts/Comp

Unity5 的新旧延迟渲染Deferred Lighting Rendering Path

unity5 的render path ,比4的区别就是使用的新的deferred rendering,之前的4的deferred rendering(其实是light prepass)也被保留了下来. Legacy Deferred Lighting Rendering Path(light prepass) 老 旧的Deferred Rendering Path,使用了light prepass渲染.因为它是老旧的(unity5之前的Deferred Lighting,但是unity5还留着

Deferred Shading延迟渲染

Deferred Shading 传统的渲染过程通常为:1)绘制Mesh:2)指定材质:3)处理光照效果:4)输出.传统的过程Mesh越多,光照处理越费时,多光源时就更慢了. 延迟渲染的步骤:1)Pass0先不做光照处理,将Mesh的Position信息和Normal信息绘制到纹理(RenderTargets,D3D支持多向输出):2)Pass1仅绘制屏幕大小的一个四边形,利用之前得到的Position纹理和Normal纹理对有效地区域选择性地进行光照处理,再输出最后的图像. 分析:由于延迟渲染

Unity性能优化(4)-官方教程Optimizing graphics rendering in Unity games翻译

本文是Unity官方教程,性能优化系列的第四篇<Optimizing graphics rendering in Unity games>的翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻译 Unity性能优化(2)-官方教程Diagnosing performance problems using the Profiler window翻译 Unity性能优化(3)-官方教程Optimizing garbage collection in Uni

shader 3 rendering path

渲染通道, rendering path. vertexlit, forward 和 Deferred lighting 旧有的非统一架构下: 分为顶点着色引擎和像素渲染通道 渲染通道是GPU负责给图像配色的专门通道: 越多,填充效率越高,流畅性越好. http://wenwen.sogou.com/z/q103129905.htm 採用统一架构后, 渲染通道既负责顶点渲染又负责像素渲染. GPU对于图像渲染时的逻辑并行运算数. 而不是物理数量. http://blog.csdn.net/bug