经验证,原来ddx/ddy这两个操作,在forward rendering与deferred rendering中存在着微妙的应用区别。

在forward rendering中,GPU shader会自动地判断其2x2像素区域是否仅有部分落在当前绘制的三角面所覆盖的光栅化interpolate范围内。

而在dr中,当将ddx/ddy操作应用于一个render target(即NDC quad)时,GPU shader这一免费的“合法性校验”操作便失效了。用于计算ddx/ddy的2x2像素区域有可能一部分位于模型的三角面A、而另一部分则位于模型的三角面B。也就是说:参与ddx/ddy运算的像素,有可能超出了模型中同一三角面的插值范围,从而导致ddx/ddy得到错误的结果,进而导致模型edge上的artifacts。这一问题在dr中使用像素world(或view)坐标重建几何法线时(normalize(cross(ddx(posW), ddy(posW)))),尤为突出。

总结:ddx/ddy与forward rendering的兼容性更佳。使用ddx/ddy,切记一定要确保其2x2区域位于同一三角面的光栅化范围内,不能跨三角面。在deferred rendering中,GPU shader不会自动地保障上述前提成立,所以没有引入其他额外机制的前提下,宜避免使用ddx/ddy计算几何法线。

附图1:deferred rendering,使用ddx/ddy重建法线,注意到edge上存在artifacts

附图2:forward rendering,使用ddx/ddy计算法线,注意到不存在edge artifacts

关于ddx/ddy重建法线在edge边沿上的artifacts问题的更多相关文章

  1. HLSL ddx / ddy

    [HLSL ddx / ddy] 在光栅化的时刻,GPUs会在同一时刻并行运行很多Fragment Shader,但是并不是一个pixel一个pixel去执行的,而是将其组织在2x2的一组pixels ...

  2. angularJS 在edge浏览器上传文件,无法主动触发ng-click

    今天发现的问题 在谷歌浏览器一直运行良好的功能,在edge浏览器不能使用. 代码参考我的另一篇博客:WebAPI Angularjs 上传文件 不能运行的原因 下图红框中的代码在edge浏览器中无法执 ...

  3. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    摘要 点云是一种重要的几何数据结构类型.由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合.然而,这使数据变得不必要的庞大,并导致问题.在本文中,我们设计了一种新型的直接处 ...

  4. 目标形体形状轮廓重建:ICCV2019论文解析

    目标形体形状轮廓重建:ICCV2019论文解析 Shape Reconstruction using Differentiable Projections and Deep Priors 论文链接: ...

  5. 如何在Microsoft Edge浏览器中添加一个Hello World插件

    注:本文提到的代码示例下载地址> How to add a Hello World extension to Microsoft Edge Microsoft Edge 随着Win 10一起推出 ...

  6. Esfog_UnityShader教程_NormalMap法线贴图

    咳咳,好久没有更新了,一来是这段时间很忙很忙,再来就是自己有些懒了,这个要不得啊,赶紧补上.在前面我们已经介绍过了漫反射和镜面反射,这两个是基本的光照类型,仅仅依靠它们就想制作出精美的效果是远远不够的 ...

  7. 【Unity Shaders】学习笔记——SurfaceShader(七)法线贴图

    [Unity Shaders]学习笔记——SurfaceShader(七)法线贴图 转载请注明出处:http://www.cnblogs.com/-867259206/p/5627565.html 写 ...

  8. Windows10 图标重建

    Windows10 图标重建 有没有遇到电脑上某个图标成了黑块,白块或者没有图呢. 那这样的话就可以使用图标重建啦. 删掉Windows10的图标文件如下图 路径: %userprofile%\App ...

  9. Azure IoT Edge on Windows 10 IoT Core

    在今年的Build大会上,微软推出了Azure IoT Edge的第一个版本(https://github.com/Azure/iot-edge ).该版本的主要特点就是将计算能力由Azure端推送至 ...

随机推荐

  1. JS正则替换掉小括号及内容

    正則表達式:\ ( [ ^ \ ) ] * \ ) JS代码: var str="hello(world)"; var nstr = str.replace(/\([^\)]*\) ...

  2. Gson转换json数据为对象

    可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试 { "id": 84041462, "lastName": "小华&q ...

  3. ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml

    前言 xsl是一门标签解析语言,很适合做动态网页的前台标签 www.bamn.cn 1 首先是aspx页面 添加一个输入框 按钮 还有一个用来显示解析后的xhtml代码的控件 <form id= ...

  4. jenkins shell脚本自动化构建阿里云k8s上应用

    #!/bin/bash source /etc/profile cd /mnt/workspace/weifeng-ui-pre/ npm i && npm run build rm ...

  5. 关于mysql中使用聚合函数结果集为空,仍显示size为1,所有元素为Null问题的解决办法

    转自:https://www.2cto.com/database/201806/757632.html 1.不使用聚合函数sql: select * from sys_role_data a left ...

  6. Quartz中时间表达式的设置-----corn表达式 (转)

    Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...

  7. 如何查看出口IP地址?

    出口ip地址怎么看?#curl ifconfig.me

  8. git学习笔记(一)—— git环境搭建

    一.简介 Git是目前世界上最先进的分布式版本控制系统(没有之一). 首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库 ...

  9. iOS 相册相机应用2

    在iOS中要拍照和录制视频最简单的方式就是调用UIImagePickerController,UIImagePickerController继承与UINavigationController,需要使用 ...

  10. apktool 在mac下的使用 -反编译安卓apk文件

    1.下载apktool 点击这里下载 ,里面有两个文件,一个是.jar,一个是自己写的脚本.sh 注:最新的apktool.jar 文件可以点击这里下载 .sh脚本是自写脚本可不用更新最新,下载的ja ...