摘要: 原来平时玩的glsl和hlsl都是基于gpu寄存器和指令集之上的虚拟机里跑的,而这些寄存器和指令集的不同,也决定了shader的版本不同。而我们平时的数据,是这一的一个方向。从硬盘disk中读取到Memory中,也就是我们平时说的内存,这时候,显卡有2种办法得到这些数据,一种是直接从memory中传入到常量寄存器中,还有一种就是先从cpuMemory到GpuMemory也就是从内存到现存,然后再从现存到gpuCaches最后到了Gpu寄存器。这里还要顺便说下zbuffer,我们都知道zbuffer是视点到每个像素的距离,范围是0-1,但z值并非真正的笛卡尔坐标系中的距离,其实是一种相对度量。然 阅读全文
posted @ 2013-01-05 01:21 凌霄神采奕奕 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 事情是这样的,前些天迷茫的我在论坛里面发了一个帖子,原帖子就不贴了,大概意思就是作为一个做图形学的新人对于未来有些迷茫求指点。把众多前辈的回复和大家分享一下,也希望可以给很多和我一样奋斗在梦想中的新人一些方向。 以下是回复: 说实话,国内的图形学界其实大家都知道是什么样子。目前来看,只能从基础慢慢做起,或者考研,向更高的目标前进找工作的话可以先到一些小公司,小公司里干活很能锻炼人,有各种机会积累经验,如果刚毕业就进大企业开始养老,基本上就学不到什么。大公司进去了薪水可能会高点,但是不代表有机会接触图形引擎,接触底层的东西,因为大公司有专人已经负责了,在几年内的情况下,排除你能力的范畴,... 阅读全文
posted @ 2012-12-29 22:58 凌霄神采奕奕 阅读(312) 评论(0) 推荐(0) 编辑
摘要: “楼顶摄影”(Rooftopping)是一种足以令人心跳停止的摄影方式,寻求刺激的摄影师必须爬到摩天楼的楼顶,而后冒险来到楼顶边缘,最后用镜头记录脚下的壮观景象。现年28岁的汤姆•瑞亚博伊(Tom Ryaboi ) 便是一位非常活跃的楼顶摄影师,曾爬上100多座摩天楼,用镜头捕捉下令人叹为观止的景象。加拿大多伦多,玩命的楼顶摄影师汤姆•瑞亚博伊(Tom Ryaboi )站在连接摩天大楼的两根电缆上。摩天大楼顶层的气温有时会达到零下,并且风也较大。加拿大伦多,一个戴着面具的男子站在一座高楼的窗户清洁吊架上。汤姆•瑞亚博伊说,坐在摩天楼顶部,他有种回家般安心的感觉,就如鱼儿在水中一样自在。他和他的 阅读全文
posted @ 2012-11-02 21:45 凌霄神采奕奕 阅读(378) 评论(0) 推荐(0) 编辑
摘要: // 设置体元语义,渲染三角形列表.deviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST);以前我们选择的体元语义都是triangle list,在tessellation程序中,不一样了,现在我们的输入虽然还是一个三角形,但它当作patch处理,三个顶点即为patch的三个控制点。其它的shader文件中,我们都要加上下面的代码,否则的话,其它物体的渲染可能会出错:deviceContext->HSSetShader(NULL, NULL, 0);devic 阅读全文
posted @ 2012-10-31 15:46 凌霄神采奕奕 阅读(498) 评论(0) 推荐(0) 编辑
摘要: Parallax occlusion Mapping 视差贴图视差贴图技术我们其实应该称之为视差遮蔽贴图技术,因为在这一技术中,会对纹理的坐标做变换,一些凸出的纹理会遮蔽到其他的纹理,这样就会看起来具备更好的凹凸的感觉了。视差贴图技术的实现原理,其实和法线贴图是一样的,都是根据法线贴图进行的处理。视差贴图比法线贴图提供更好的视觉效果,而且跟法线贴图有同一个目的:在保证模型细节的情况下,大幅度降低场景的多边形数目Parallax occlusion Mapping 视差贴图 (PDF文件)http://rapidshare.com/files/2485 ... ionMapping.rar.ht 阅读全文
posted @ 2012-10-24 11:17 凌霄神采奕奕 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 传统的渲染过程通常为:1)绘制Mesh;2)指定材质;3)处理光照效果;4)输出。传统的过程Mesh越多,光照处理越费时,多光源时就更慢了。延迟渲染的步骤:1)Pass0先不做光照处理,将Mesh的Position信息和Normal信息绘制到纹理(RenderTargets,D3D支持多向输出);2)Pass1仅绘制屏幕大小的一个四边形,利用之前得到的Position纹理和Normal纹理对有效地区域选择性地进行光照处理,再输出最后的图像。分析:由于延迟渲染将光照的处理量由空间转换到了平面,减少了光照等效果的计算量,提高了绘制速度,对多光源的绘制优势更为明显。渲染流程延迟渲染管线可分为四个阶段 阅读全文
posted @ 2012-10-19 10:56 凌霄神采奕奕 阅读(1050) 评论(0) 推荐(0) 编辑
摘要: In the pixel shader, we first define base interfaces for different light and material types://-------------------------------------------------------------------------------------- // Interfaces //-------------------------------------------------------------------------------------- interface ... 阅读全文
posted @ 2012-10-15 15:19 凌霄神采奕奕 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 1.构造一个平截台体(Frustum)最近距离=-projMatirx.43/projMatrix.33projMatrix。33 =深度/(深度-最近距离)projMatrix。44=-最近距离*(深度/(深度-最近距离))FrustumMatrix = projectionMatrix*viewMatirx;FM=FrustumMatrix;//最近面m_planes[0].a = FrustumMatirx._14 + FrustumMatirx._13; m_planes[0].b = FrustumMatirx._24 + FrustumMatirx._23; m_planes[0] 阅读全文
posted @ 2012-10-15 11:23 凌霄神采奕奕 阅读(198) 评论(0) 推荐(0) 编辑
摘要: ID3D11DeviceContext InterfaceThe ID3D11DeviceContext interface represents a device context which generates rendering commands.MembersThe ID3D11DeviceContext interface inherits from ID3D11DeviceChild. ID3D11DeviceContext also defines the following types of members:MethodsMethodsThe ID3D11DeviceContex 阅读全文
posted @ 2012-10-10 15:06 凌霄神采奕奕 阅读(622) 评论(0) 推荐(0) 编辑
摘要: 在代码里直接出现的”abcdef”这种字符串,在程序执行的时候,系统会将它们放在常量区,所谓常量区就是一直存在的,只读的,不可更改的数据区域,并且一个字符串只会有一份。假设你在程序里有两行代码 char* p1 = “agcd” ; char* p2 = “agcd” ; 无论你这两个行代码隔了多远,如果你想知道p1和p2所指向的字符串在内存中是不是同一个,那答案是肯定的,p1和p2的值完全一样。”agcd”这是一个存在于内存中的常量字符串,它从程序一开始就在那里,一直到程序结束读不会改变。在内存中,”agcd”是以如下方式存储的 ‘a’ ’g’ ‘c’ ‘d’ ‘\0’ 它的最后肯定有一个字 阅读全文
posted @ 2012-10-09 15:52 凌霄神采奕奕 阅读(132) 评论(0) 推荐(0) 编辑