使用directx11实现高质量图形效果@CGDC4
来源:互联网 发布:英语聊天软件 编辑:程序博客网 时间:2024/05/16 14:52
High Quality Graphic Effects using DX11@CGDC4
这个文章是让我感觉到nv诚意的一个文章,巨多的到中国来做presentation的都是把gdc上的文章再讲一遍,nv则讲了不少新的东西。
主力也都到场,也分享了很多知识。
-----------------------------------------------------------------------------------------------------------------------------------------------------
DirectCompute
direct compute是dx11相比之前版本的最根本性的变化。
- 以更加接近cpu的方式来做运算:需要改变思维了,天空可以说变得更宽了
- 做一些通用运算
- 可以运行在任意线程上(也就脱离了graphics pipeline的限制)
- 对d3d资源的访问也没有变少
- 访问buffer如同访问内存,不再像原来是sampling的方式,不过memory layout和访问地址的计算也要自己搞了
- atomic operation
- 支持,但是也是有额外消耗的
- 用来做thread之间的数据交互
- memory的一些东东
Memory Space
Speed
Visibility
Global Memory(Buffers, Textures, Constants)
Longest Latency
All Threads
Shared Memory(groupshared)
Fast
SingleGroup
Local Memory(Registers)
Very Fast
Single Thread
- 内存的效率上和cpu上类似,也要关注cache效率等
- 但是如果读取方式类似texture,那就用texture的方式读取内存是最好的
- 指令执行的时候遇到branch也会有mask,但不会像cpu做的那么好了
- 理论上thread是格子运行的,实际上硬件里是论组(叫warp)来执行的
- nv上warp size是32
- context switch&dependency
- 如果数据有dependency的话,会有一些stall来确保之前的数据有被完成写入,后面的会read到正确的数据。
- compute mode和graphci mode的切换会造成context switch的开销
1280x720
CS
PS
CS/PS
Full-res AO
426 fps
255 fps
1.67x
Half-res AO
593 fps
496 fps
1.20x
1600x900
CS
PS
CS/PS
Full-res AO
311 fps
168 fps
1.85x
Half-res AO
461 fps
368 fps
1.25x
可以说优势还是很明显的,这个就是一个典型例子,硬件在频率没有发生变化,但是在算法级别上有提升,仍旧会带来巨大的不同,这个也是pc的硬件能力要超越console很多才会打平手的原因所在。
这样的计算不用经过rasterizer,所以很适合compute shader来做的。
-----------------------------------------------------------------------------------------------------------------------------------------------------
OpacityMapping
这样一个效果,很多particle在里面。
常用技术就略过吧,里面几个做法和思路挺好的:
- low res buffer render
- 这个是一个最常用的做high fill rate feature优化的方法,但是大家都受low res depth和high res depth不匹配的困扰,在uncharted2这样的游戏甚至都存在
- nv的解决方法是:nearest depth up sampling,
- 把high res depth和low res depth做比较,几个点中肯定会有matching的点,就用这个
- 使用GatherRed可以很快的sample 2x2的low res depth
- 使用directx11实现高质量图形效果@CGDC4
- 使用directx11实现高质量图形效果@CGDC4
- DirectX11 使用计算着色器实现高斯模糊
- DirectX11 使用几何着色器实现公告板效果
- 用AGG实现高质量图形输出(一)
- 用AGG实现高质量图形输出(二)
- 用AGG实现高质量图形输出(三)
- 用AGG实现高质量图形输出(四)
- 使用directx11实现曲面细分
- DirectX11 使用Cube Mapping 立方体环境贴图实现天空、物体反射效果
- matplotlib简介-高质量图形输出
- 使用FreeType实现DirectX11的文本输入
- 使用canvas和js实现多种图形拖动效果
- 基于 Python Matplotlib 模块的高质量图形输出
- 基于 Python Matplotlib 模块的高质量图形输出
- R语言的高质量图形渲染库Cairo
- 基于 Python Matplotlib 模块的高质量图形输出
- 使用ViewPager实现高仿launcher拖动效果
- 高效程序员的45个习惯
- 什么是HAL 硬件抽象层
- 过凸多边形重心的任意直线能将图形面积等分?
- Robot畅想曲
- 关于引用&的讨论
- 使用directx11实现高质量图形效果@CGDC4
- 菜鸟学QT之二-------------初识信号、槽、布局
- hdu acmsteps 1.3.6
- 删除sql server注册服务器
- SPAN 和 DIV 的区别
- JDBC数据库的增、删、改语句
- 如何在一个已排序的NSArray中搜索某一特定字符串?答案是使用CFArray自带的搜索功能
- 如何在VLC中支持IPv6 RTSP流媒体播放
- iPhone开发面试题--葵花宝典