这章介绍在片元shader中计算导数近似值的技术。这个技术把特别的值载入纹理mipmap的每个级别,以特殊的方式使用纹理映射硬件,计算出导数的结果,给出在屏幕上的像素间某个量的变化率。

Cg标准程序库提供ddx和ddy函数,计算任意关于x和y像素的导数,但是有些硬件不支持这些导数的计算(至少在写这本书的时候),本文提供了一个解决方案,可以基于纹理映射功能解决这个问题。

在程序纹理中需要特别注意shader的反走样,大致来说,不应该在单个点上计算程序函数的值,而是在面积上计算函数的平均值,更准确的说,就是要计算函数在当前像素和邻近像素之间的平均值。

a没有反走样,不能表现水平方向上的高频细节。b把过于高频的细节图案中移走消除失真,计算出正确的过滤宽度是关键

用导数函数计算过滤宽度:

float filterwidth(float2 v)
{float2 fw = max(abs(ddx(v)), abs(ddy(v)));return max(fw.x, fw.y);
}

用纹理计算过滤宽度:用函数tex2D()所做的纹理贴图查询,可以自动地对纹理查询进行反走样,即使真实纹理坐标的像素异常地变化,适当过滤的纹理值还是能在每个像素的地方返回。基于在相邻像素上所计算的纹理坐标,硬件可以为每个查询决定过滤的纹理面积。我们以这样一种方式进行纹理查询:(1)为特定的纹理坐标租选择mipmap级别(2)利用这一点决定过滤宽度

先将宽度信息写入纹理中

再从根据输入的uv信息读出宽度信息

uniform sampler2D filterMap;float filterwidth(float2 uv)
{float log2width = (255./16.) * tex2D(filterMap, uv).x;return exp2(-log2width);
}

GPU Gems1 - 25 用纹理贴图进行快速过滤宽度的计算相关推荐

  1. GPU Gems1 - 14 透视阴影贴图(Perspective Shadow Maps: Care and Feeding)

    开篇先说,这文章好难懂啊,到现在也没完全弄明白,有大佬的话欢迎指点.这篇大体意思是对Perspective Shadow Maps进行部分优化.GEMS这书这点是真挺蛋疼,很多文章都是对某项技术的优化 ...

  2. Windows 8 Directx 开发学习笔记(十一)地形纹理贴图

    前一篇实现木箱贴图时,木箱的六个面都正好用一整张纹理图,即六个面的纹理坐标均在[0,1]内.然而在为比较大的模型贴图时,像山峰河谷模型,如果只用一张纹理图,那么每个三角形只得到几个纹理元素,无法为提供 ...

  3. opengl生成图片php,(转)使用OpenGL显示图像(七)Android OpenGLES2.0——纹理贴图之显示图片...

    转:http://blog.csdn.net/junzia/article/details/52842816 前面几篇博客,我们将了Android中利用OpenGL ES 2.0绘制各种形体,并在上一 ...

  4. 【threeJS】纹理贴图

    纹理贴图设置 //镜面处理 texture.flipY=false; //边缘处理 texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 加载纹理 ...

  5. three.js 纹理贴图的使用

     刚刚入门的小伙伴请先查看 three.js 基础认识与简单应用 本文章中的两个注意点,下面也有提到,分别是: 1.  vue项目中使用的贴图路径-->需要把 static文件夹 放到 publ ...

  6. OpenGL(二十二) gluBuild2DMipmaps 加载Mip纹理贴图

    当纹理被用于渲染一个面积比它本身小很多的对象时,会由于纹理图像的降采样率不足而导致混叠现象,主要的表现特征是纹理图像的闪烁,出现纹理躁动.特别是在场景远近移动变换时,这种闪烁情况更为明显,严重可能会影 ...

  7. dx12 龙书第九章学习笔记 -- 纹理贴图

    1.纹理与资源的回顾 我们其实很早就接触过纹理了,之前的深度缓冲区与后台缓冲区,它们都是通过ID3D12Resource接口表示,并以D3D12_RESOURCE_DESC::Dimension成员中 ...

  8. 关于ThreeJs纹理贴图动画的实现

    效果图:实际效果,图中的贴图是可以动的 一.准备工作 1.静态文件 2.首先你要引入相关依赖: threejs核心依赖: http://www.yanhuangxueyuan.com/versions ...

  9. 【openGL2021版】纹理贴图

     [openGL2021版]纹理贴图       大家好,我是Lampard猿奋~       欢迎来到船新的openGL基础系列的博客,今天学习的是纹理贴图  (一)回顾       上周我们学习了 ...

最新文章

  1. 2D图片3秒变立体,变换视角流畅自然:Adobe实习生的智能景深算法,登上顶级期刊...
  2. 一个传值的问题”*”与”*”
  3. BZOJ1565[NOI2009]植物大战僵尸——最大权闭合子图+拓扑排序
  4. 在AspNetMvc中使用日志面板. Logdashboard 1.1beta
  5. qt 背景和控件布局_Qt编写自定义控件26-平铺背景控件
  6. ***经验之教你穿透ADSL路由***内网
  7. java 实例化xpath_Java XPath示例教程
  8. DevExpress.XtraTreeList.TreeList的DataSource属性使用注意事项.
  9. hdu 3853 LOOPS 概率dp入门题
  10. mysql的数据库实例名是啥_数据库名、数据库实例名与数据库域名
  11. C语言实现通讯录(动态版)
  12. Java 类详解 9章
  13. 漫步微积分二十九——微积分基本定理
  14. 机器学习模型的评价指标和方法(附代码)
  15. 用计算机编程解魔方,4 分钟!OpenAI 的机器手学会单手解魔方了,完全自学无需编程...
  16. 读书笔记----《平凡的世界》第三篇
  17. BZOJ1232 安慰奶牛cheer (洛谷2916)
  18. 镁光闪存颗粒对照表_内存颗粒版本判断方法和编号解析(三星、美光、海力士)...
  19. 算法之最长公共子序列问题
  20. 51单片机的PID水温控制器设计

热门文章

  1. 计算机七年级书籍段落,七年级下册片段.doc
  2. 计算机cpu温度显示原理图,腾讯计算机管家关于如何检查CPU温度的图形教程
  3. [蓝桥杯][2014年第五届真题]稍大的串(STL)
  4. java session 数量_java中使用session监听实现同帐号登录限制、登录人数限制
  5. php5 php4,自动实现php4和php5环境的切换......
  6. jsp或servlet依赖范围不能省略原因
  7. html5 formdata api,HTML5 API FormData --- 使用
  8. python如何遍历文件夹中的所有图片_python实现遍历文件夹图片并重命名
  9. HTML--HTML入门篇(我想10分钟入门HTML,可以,交给我吧)
  10. Codeforces Round #623 (Div. 2, based on VK Cup 2019-2020 - Elimination Round, Engine) C. Restoring