![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LowLevel
安柏霖
zhihu : https://www.zhihu.com/people/toughbro
<无限法则>--LeadProgrammer
<天涯明月刀>--Engine Architect
<Ghost Recon:Advanced Warfighter2>
<EndWar>
展开
-
GpuDriven中的alignment
最近在实现gpu driven的事情,在alignment和padding上面踩了一些坑;先说结论,如果是想尽量少踩坑,在设计数据结构时候都保证是能pad到16byte(float4)倍数的会让问题少非常多。这里罗列几个要点,有一些并没有明显的文档(可能有,但是常规文档中没看到)gpu中读资源时候强制做了align操作,导致非16byte 的数据会出现错误struct InstData...原创 2020-02-12 22:45:13 · 921 阅读 · 0 评论 -
High Performance Post-Processing
link:http://www.gdcvault.com/play/1014304/Advanced-Visual-Effects-with-DirectX主要介绍computer shader硬件结构特性,以及在DOF系列feature上的引用。这是一个比较hardcore的ppt,nice。ThreadGroup显卡里的多核架构和cpu端多核架构很多地方是重复的,重复部分跳过,看下特别的:thread group。thread group是一组thread,他们有一个shared memory,这个是其原创 2011-03-26 21:37:00 · 1959 阅读 · 1 评论 -
D3DMatrix Major
row major,内存上是一行行的访问,第一行走完再走下一行。column major反之。-----------------------------------------------------------------------------------原创 2011-07-04 15:54:57 · 2178 阅读 · 2 评论 -
unsigned type is dangerous
google的tcmalloc代码里面有这样一段warning:// NOTE: unsigned types are DANGEROUS in loops and other arithmetical// places. Use the signed types unless your variable represents a bit// pattern (eg a hash value) o原创 2012-03-13 22:50:47 · 1614 阅读 · 0 评论 -
固态硬盘
使用固态硬盘工作也有多半年了,速度提升n倍,可以说是最具性价比的硬件升级,一般来说60g的也就够了,作为系统盘,放编程工具和项目,win7 64位启动时间15秒左右。当然如果项目很大,装的软件多就用120g也很好。编程工作可以持续集中注意力,之前用hdd的时候就是一编译就要很长时原创 2011-09-06 11:26:40 · 2817 阅读 · 0 评论 -
AMD 的下一代内存技术--HBM
AMD在硬件技术上再做一次创新,来了一个叫做HBM(high bandwidth memory)的技术 结构上会使用stacked memory 看起来有点像硬盘的raid。 然后使用非常快速的连接器连接到cpu/gpu,在速度上几乎等同于on-chip integrated ram。 然后在能耗上也大幅度降低。 整体性能完爆GDDR5:not bad原创 2015-05-24 19:36:35 · 1981 阅读 · 0 评论 -
Nvidia Maxwell Architecture
http://en.wikipedia.org/wiki/Maxwell_(microarchitecture) http://international.download.nvidia.com/geforce-com/international/pdfs/GeForce_GTX_980_Whitepaper_FINAL.PDF 前段时间做性能测试,同样场景gts450,1680x1050分辨率原创 2015-05-24 20:24:25 · 2631 阅读 · 0 评论 -
Lighting you up in Battlefield 3
link:http://publications.dice.se/attachments/GDC11_LightingYouUpInBattlefield3.pptx由超级hardcore的Dice带来的LightingYouUpInBattleField3ThePast首先介绍了dice之前项目的一些技术点:BattleFieldBadCompany:(2008)Frostbite1;Forward-renderingNostreamingHemisphericalsky/ground lig原创 2011-03-28 14:33:00 · 2157 阅读 · 0 评论 -
使用directx11实现高质量图形效果@CGDC4
High Quality Graphic Effects using DX11@CGDC4说实话这个文章是让我感觉到nv诚意的一个文章,巨多的到中国来做presentation的都是把gdc上的文章再讲一遍,让人感到很失望很不爽,我觉得这是很没诚意的表现(组织者和演讲者)。原创 2011-08-07 13:12:34 · 2902 阅读 · 0 评论 -
The future of the APU
links:http://developer.amd.com/documentation/presentations/assets/A4MMC2011_Keynote.pdf overall:apu的特点是: cpu和gpu共享unified memory,和xbox360的方式很像。也是APU的优势核心,突破了通过pci来做cpu,gpu通信所带来的束缚原创 2011-06-28 15:17:00 · 1487 阅读 · 0 评论 -
Hotspots, FLOPS, and uOps: To-The-Metal CPU Optimization
link:http://software.intel.com/file/34646intel在gdc2011上介绍cpu架构和优化的一个paper,还介绍了avx和vtune amplifier。底层优化在游戏开发中还是富有生命力,因为我们的确需要它们来获得高于行业水准的执行效率。这个也是加深对计算机理解的一个重要方式。carmack说的好:底层编程对于程序员的灵魂有好处。一句废话:刻意强调底层很重要很牛逼或者说现在这硬件底层没用都是有待商榷的,它有什么的影响力就需要相应的工作量,没什么特别之处。4个方面可原创 2011-04-06 22:57:00 · 1996 阅读 · 2 评论 -
Halo Reach Effects Tech
link:http://cmpmedia.vo.llnwd.net/o1/vault/gdc2011/slides/Chris_Tchou_Programming_Halo_Reach_Effects.pptx halo reach的一些特效技术: particles 首先提到bungie老的particle系统基于一个很大的uber shader,uber shader的一个坏处也体现的比较好,原创 2011-03-28 15:31:00 · 2240 阅读 · 3 评论 -
LionheadAtGDC2011
http://www.gdcvault.com/play/1014350/Mega-Meshes-Modeling-Rendering-and全名太长了,像一条微博那么长。lionhead studio开发了fable和black&white系列的强力工作室。介绍他们给《milo&kate》开发的游戏(milo真大牌,有人专门给开发游戏)原创 2011-03-27 18:09:00 · 2117 阅读 · 1 评论 -
TheTechBehindDx11UnrealEngine"Samaritan"Demo
link:http://www.nvidia.com/content/PDF/GDC2011/Epic.pdfshort hair使用camera aligned triangle strip, 然后配上贴图,很类似grass的渲染。重点在alias的处理,在单纯的1x buffer怎么做都是达不到高质量:alpha test:alisalpha blend:sort, fogging, dofalpha to coverage:problems with many layers最后选择是在4xmsaa b原创 2011-03-27 10:26:00 · 2032 阅读 · 0 评论 -
smooth step
smoothstep是一个cubic hermite interpolation.原创 2016-10-31 23:48:32 · 2612 阅读 · 0 评论 -
[运营期间开发]卡顿处理--GPUView
开发期间的卡顿处理的方法比较多,可以打log等方法。GPUView 在运营期间就是GPUView就是逆天的给力存在。 GPUView早先是一个微软实习生开发的东东(好逆天的实习生),以单独的方式来发布,后来集成到windows sdk中来,本blog上面这里有一些记录。 而且在后续GPUView依旧保持着发展,功能也越发好用了,连intel的gpa也在底层使用这个机制。GPUView原创 2016-03-12 17:04:29 · 7334 阅读 · 5 评论 -
dx12中的一些“难缠”的坑
在开发过程中,有两个bug,属于同一类:贴图读出来是纯黑色。然后在debugger里面看起来这个贴图都是对的,但就是sample出来是0;究其原因,就是对于贴图的描述与其实际情况不符,包括不限于与创建时候的格式等不符合与使用的情况(本身是texture array,用成了texture cube)都会有这个情况。简言之,debugger里能看到,但是sample出来是黑,大概率就是描...原创 2019-09-08 23:27:29 · 1212 阅读 · 0 评论 -
dx12中rendertarget大小匹配导致的一个bug
比较有意思。问题是如果depth stencil大小和color render target大小不一样,比如depth stencil大小比较小,那么画一个全屏quad,就只能覆盖其中一部分比如上图中,只画了一部分,原因就是depth stencil 的resolution其实更小。做法上,可以选择在渲染底层实现一个check:drawcall之前对size做一个匹配检查,color rt...原创 2019-10-07 15:54:44 · 527 阅读 · 0 评论 -
DX11 TECHNIQUES IN HK2207
<br />link:<br />http://www.gdcvault.com/play/1014303/Advanced-Visual-Effects-with-DirectX<br />那个ati搞笑demo:http://www.youtube.com/watch?v=O-agRm_h16s<br />其实来讲,这里面列举的技术名词也没比unreal的“扔烟头的哥们”差哪里去,可是做出来的效果真是一个悲剧。<br /> <br /> <br />重点说了compute shader一些东西,很多si原创 2011-03-26 17:30:00 · 1548 阅读 · 0 评论 -
Tessellation on Any Budget
<br />link:<br />http://www.gdcvault.com/play/1014307/Advanced-Visual-Effects-with-DirectX<br /> <br /> <br />nv的一个叫麦当劳的哥们做的关于tessellation的东西。<br />过于细节就算了,简单讲tessellation是procedual技术利器,其中列举了几个方法,比如将triangle顶点作为贝泽尔曲线参数来做出贝泽尔曲线,或者让box沿着normal方向拉伸造成被吹胖的感觉。<b原创 2011-03-26 11:12:00 · 1356 阅读 · 0 评论 -
Designing Fast Cross-Platform SIMD Vector Libraries
是对这篇文章的笔记:http://www.gamasutra.com/view/feature/4248/designing_fast_crossplatform_simd_.php?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+GamasutraFeatureArticles+(Gamasutra+Feature+Artic原创 2010-02-02 15:14:00 · 3090 阅读 · 1 评论 -
SmartCache
http://www.intel.com/technology/architecture-silicon/core/ 就是可以根据实际情况动态分配cache。比如4M L2 cache share给2核,会根据实际需求来动态分配,一个核用的多,可能全占。原创 2009-12-18 06:42:00 · 1622 阅读 · 0 评论 -
SIMD to SSE5
SIMD:http://baike.baidu.com/view/188706.htmSSE指令集:http://baike.baidu.com/view/65687.htm 细节了解对于我来讲还不是那么必要,就集中这个指令集进化的核心部分稍微总结下。SIMD指单指令多个数据,比如MMX这种有64bit寄存器,可以放两个int32进去,然后可以一次加两个。在很多处理器,原创 2009-12-18 09:42:00 · 1077 阅读 · 0 评论 -
VirtualMemory重温
呃,以前考过好几遍了,但是发现和具体问题结合起来仍旧会有认识不好的地方。在总结下吧。 总结时候就用ps3(其实就是linux,涉及到权限说一声,我赶紧删除,囧)来做实际结合(唔,不敢保证都正确,对照书,文档和自己理解来吧) virtual memory本质上属于一种抽象表示,让system可以脱离开硬件的限制(比如memory大小)来工作。所以cpu与之交互的是virtual原创 2009-12-28 20:35:00 · 2161 阅读 · 0 评论 -
Cache in action
cache这个东西在游戏开发中绝对是扮演超级巨星的角色。在处理器(cpu,gpu)发展如此神速的今天,几乎ALU计算很难成为瓶颈,而数据访问则常常成为问题所在。 cache是一个硬件上的结构(virtual memory则是由操作系统来控制),是对processor访问memory的一种优化。概率问题在软硬件设计中起了很大作用像cache这个依照space和时间上的重用高概率,像s原创 2009-12-29 09:43:00 · 1500 阅读 · 0 评论 -
PowerPC上浮点和定点有可能并行做
PowerPC上有专门的processor处理定点计算,还有专门的processor处理浮点和vector计算。 两个共享instruction读取部件----也就是指令都要从这个部件读取,一个一个来。data cache也是共享的。 但是他们是分别得processor来处理的,也就是说如果没有data dependency的话,定点指令和浮点指令可以完全并行的处理。而且这原创 2010-01-04 13:52:00 · 1532 阅读 · 0 评论 -
gpu programming guide for g80(dx9)
http://developer.nvidia.com/object/gpu_programming_guide.html大量零散的coding tips:vertex processingindexed vertex buffer 最好nvstrip一下,可以有效提高post vertex cache hit ratevertex attribute什么的也是一个unit(vertex assembly),attribute多了(attribute/vertex or vertex number)也会bo原创 2010-09-25 17:21:00 · 1451 阅读 · 1 评论 -
分辨率变化的数据from mydrivers 显卡评测
<br />http://hardware.mydrivers.com/2/178/178706.htm<br />4系列入门显卡450的比较评测。<br />对里面的分辨率变化带来的性能变化的数据很感兴趣:<br />对比是不同分辨率下的fps。<br />帧数对比是:1280x1024 对 1680x1050<br />比率为:0.74<br /> <br />那么帧数在各个显卡上的差距是:<br /> <br /> <br />Sc2<br />430:0.8593<br />220---0.81<b原创 2010-12-11 12:37:00 · 1240 阅读 · 0 评论 -
盈通GTS 450游戏高手评测
<br />http://hardware.mydrivers.com/2/181/181720_7.htm<br /> <br />很有指导意义的是游戏里的一些数据:<br /><br />sc2数据,普通大约是超高的%55的时间,在A卡N卡上差不多一样。<br /><br />farcry2的0AA和4xAA,大约花了额外%15的时间<br /><br />dirt2的数据来看,4x和8x之间的差距很有限,N卡是%2.5,A卡是%7<br /><br />lost planet2:<br />0xAA原创 2010-12-11 10:49:00 · 1851 阅读 · 0 评论 -
显卡参数指标
http://www.kludx.com/browse_video_cards_detailed.php怕网站消失,copy之:ATI DirectX OpenGLName DirectXPixel ShaderVertex ShaderPrimitive CountMax. Vertex IndexActive LightsTexture WidthMax Point SizeVS ConstVS Inst. ExecutedVS 3.0 Inst. SlotsPS Inst. ExecutedPS 3原创 2010-12-13 00:04:00 · 4888 阅读 · 1 评论 -
c++ template
<br />template应该说既熟悉又陌生,目前的理解看来是更高一级的抽象。在做系统级的组件时候还是很有威力的。<br /> <br /> <br /> <br />template理解关键点在于template的instanciate的模式。<br /> 最懒原则:在instanciate的时候,遵循最小原则或者最懒原则,能不instanciate则不instanciate。像有一些函数的实现没有被用到,则不会生成,这是一个基本原则,在我们需要判断的时候可以基于这个来。可以在link time ins原创 2011-01-03 20:38:00 · 1447 阅读 · 1 评论 -
gpu hardware chips[11.20]
pixel shader//ps线程32个为一组,每一个(32中的一个)负责一个fragment。其中fragment需要2x2的quad为单位来进行处理。每组线程最多可以处理来自4个三角形的数据。所以会有较多的情况导致浪费:比如,三角形生成小于8个像素。这个特性所有n卡上都一直这样。//当一个三角形大小小于一个像素的时候,会做bounding box test,bounding box是这个三角形的bb,和周围像素做test,如果没有和任何一个fragment中心相交,则舍弃。也就是说小于一个像素的三角形原创 2010-11-16 16:07:00 · 2030 阅读 · 5 评论 -
link time code generation
<br />http://msdn.microsoft.com/en-us/magazine/cc301698.aspx<br />在link时刻做的代码优化。<br />平时接触的编译器优化基本是compile time优化,比如inline这样的工作。<br />其限制就是可以做的东西就是在一个编译单元里,一旦调用的一个函数在另外一个编译单元,就只有跳转着一个选择,至于跳转的细节就是在link time来决定了。<br /> <br />link time 优化就是在拿到所有编译单元结果了之后,在全局做原创 2010-11-23 17:42:00 · 5027 阅读 · 0 评论 -
显卡能力在cod7上的排名
<br />显卡排名很难从名字上看出来,那么多型号也没法去一个个查询和记忆,这样的排名很大程度上比较说明问题的:<br />原创 2010-11-23 22:01:00 · 1732 阅读 · 0 评论 -
perfhud chips[up to 11.03.08]
相当hardcore的软件,越用越觉得强大。只是没有gpa那么亲民,不过用熟悉了之后相当深入。dc duration是cpu端对drawcall的消耗。原创 2011-03-04 15:38:00 · 1805 阅读 · 1 评论 -
VideoMemory, SystemMemory And AGPMemory
原帖在下文,笔记:DxFlag:像D3DUSAGE_DYNAMIC, D3DPOOL_DEFAULT, D3DPOOL_MANAGED, D3DPOOL_SYSTEMMEM这些都是给driver一些提示说我们想这样用这些资源(静态的,动态的。。。),到底这些资源会被如何管理还是driver来说了算。一些倾向是:D3DPOOL_DEFAULT:会根据usage来放置资源AGP memory是bios来决定分配的,这里有一个查看器,http://developer.nvidia.com/object/agp_m原创 2011-02-24 11:37:00 · 2887 阅读 · 4 评论 -
nv fermi GF100 preview
http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdfhttp://www.pcper.com/article.php?aid=858http://news.mydrivers.com/1/154/154401_1.htm intel想原创 2010-01-19 00:30:00 · 1152 阅读 · 0 评论