(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
参考:https://stackoverflow.com/questions/28246413/understanding-the-basics-of-dfdx-and-dfdy
参考:https://zhuanlan.zhihu.com/p/113360369
参考:https://blog.csdn.net/ljytower/article/details/83024517

1. GPU并行计算

我们经常听说shader中,尽量减少分支语句;
原因是:
if-else分支语句在执行时,实际各if-else中的操作都会被执行的,只是基于判定,有的被短路掉,不执行/不记录,但执行时间消耗都是要等待的。
深层次的原因是:
GPU的实现上,使用SIMT-单指令多线程,实现的并行执行;执行的步骤指令是同步进行并往下执行的,就像一排军人走正步一样,step by step,一步一步向下执行;遇到分支语句时,有的走到分支中,有的不走到分支中;不走到分支中的也需要等待这一步的执行,从而保持步调一致。
(这块可以参见参考文档中描述)

2. 关于dFdx/dFdy

dFdx/dFdy我们经常称它为偏导,它的实现较强的依赖了GPU的SIMT工作方式。

  1. 在fragment shader中,在一个批次并行计算时,这个批次如果调用dFdx/dFdy(param)时,所对应的像素点都执行了该操作,传递了参数param;下一步收集到这些传入的参数,然后计算与该像素点相邻像素点之间传递的参数的差值就将做为这个函数的返回。

  2. 导数的定义是:函数y = f(x),导数y’ = dy/dx,这里的x向指像素位置,y指向传入的参数,dx表达像素位置变化量,dy表达传入参数变化量,则批次执行过程中:
    rt = dFdx(value)/dFdy(value) 调用将形成-形如这样例子的调用关系:
    x(100, 100) -> param y(value1)
    x(100, 101) -> param y(value2)
    x(101, 100) -> param y(value3)
    x(101, 101) -> param y(value4)
    dFdx(value1)将返回, (value3-value1)/(101-100),即rt = value3-value1
    dFdy(value1)将返回, (value2-value1)/(101-100),即rt = value2-value1

以上就是对dFdx/dFdy实现的初步理解,如有理解不对的地方欢迎评论指出。

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

关于dFdx/dFdy的实现相关推荐

  1. opengl dfdx dfdy

    本文是关于偏导数函数dfdx.dfdy的个人实验理解,如有错误,请各位留言指正! 参考文档: https://segmentfault.com/a/1190000019681666?utm_sourc ...

  2. dFdy dFdx如何理解

    dFdy dFdx这两个函数如何理解 笔者更倾向认为这是一个glsl预编译时处理的一个宏,类似c语言的sizeof the opengl shading language 4.4是这么描述这两个函数的 ...

  3. 深度学习与计算机视觉(四)反向传播及其直观理解

    四.反向传播及其直观理解 4.1 引言 问题描述和动机: 大家都知道,其实我们就是在给定的图像像素向量x和对应的函数f(x)f(x)f(x),然后我们希望能够计算fff在x上的梯度∇f(x)" ...

  4. 两个空间点直接距离投影公式_HBAO(屏幕空间的环境光遮蔽)

    别的不多扯,直接进入正题,HBAO全程Image-space horizon-based ambient occlusion 对于屏幕上的像素点P,HBAO算法通过以下几个步骤来计算它的环境光遮蔽 1 ...

  5. 考研数学一基础技巧题汇总

    本篇博客里博主总结了历年真题.模拟题中容易忽视的基础与技巧: 轻装上阵很重要!希望大家熟练掌握以下每个知识点. 本篇博客侧重于基础部分,同时还有一些不常考,但考题很简单的知识点. 但是考研数学题的思路 ...

  6. (九)unity自带的着色器源码剖析之——————UnityShadowLibrary.cginc文件分析(实时阴影和烘焙阴影、阴影淡化、阴影渗漏处理、PCF阴影过滤解决实时阴影锯齿)

    一.阴影与全局照明系统的关系 Unity3D引擎可以根据宏SHADOWS_SCREEN和LIGHTMAP_ON是否启用决定是否在全局照明系统下对阴影进行混合处理.如果这两个宏同时启用,则HANDLE_ ...

  7. Unity Shader - ddx/ddy偏导函数测试,实现:锐化、高度图、Flat shading应用、高度生成法线

    文章目录 ddx, ddy 说明 DirectX - ddx, ddy OpenGL - dFdx, dFdy 伪代码表示 可用它来做什么 简单的边缘突出应用 Shader 边缘突出-锐化-增加差值 ...

  8. 【CS231n】斯坦福大学李飞飞视觉识别课程笔记(十一):反向传播笔记

    [CS231n]斯坦福大学李飞飞视觉识别课程笔记 由官方授权的CS231n课程笔记翻译知乎专栏--智能单元,比较详细地翻译了课程笔记,我这里就是参考和总结. [CS231n]斯坦福大学李飞飞视觉识别课 ...

  9. hxy系列5-反向传播

    作者:寒小阳  时间:2015年12月.  出处:http://blog.csdn.net/han_xiaoyang/article/details/50321873  声明:版权所有,转载请联系作者 ...

最新文章

  1. OpenCV 【三】————contours便利删除操作方法
  2. strcpy,memcpy和memmove区别
  3. abstract class与interface的差异
  4. 计算机制图实训心得体会,绘图实训心得体会
  5. VTK:图片之ImageContinuousDilate3D
  6. android 活动切换动画,android – 在使用ChangeImageTransform共享元素转换的两个活动之间动画化ImageView...
  7. 在eclipse中创建maven项目错误的解决方法:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-qu
  8. matlab自动排版,工具方法| Matlab 简单绘图与排版
  9. 流畅的Python 1. Python数据模型(特殊方法 __func__())
  10. fileziller 恢复 站点管理器 内的ftp帐号方法
  11. 【DL小结2】CNN前向、反向传播及常用结构
  12. 一张表带你了解自动化测试工具Parasoft VS TestBed
  13. 网站盈利有哪些模式?
  14. 【IM-03】Web端匿名聊天
  15. 【Windows Server 2019】路由服务的配置和管理
  16. STM32_iC-MHM磁编码器使用
  17. matlab报错问题处理,函数或变量无法识别,不受支持的符号、不可见的字符或非 ASCII 字符的粘贴———卸载之前
  18. c语言'\0','0',0 ,0之间的区别
  19. HTML网页制作入门
  20. 100ms的SQL把服务器搞崩溃了

热门文章

  1. 树莓派驱动L9110H灭火风扇模块
  2. 初学css的重要知识点
  3. Object-Oriented JavaScript
  4. 使用bison编写语法分析器
  5. 读书笔记 // 《精益数据分析》
  6. PyTorch 中的 dropout Dropout2d Dropout3d
  7. 杨氏双缝与等倾干涉实验Matlab仿真
  8. [附源码]Java计算机毕业设计SSM城市智能公交系统
  9. 高分二号多光谱GEOTIFF影像批量转换为JPG图片
  10. mybatis生成的Example实例函数使用及详解