博客园 - linyizsh
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=64983
2017-03-25T00:17:38Z
linyizsh
https://www.cnblogs.com/linyizsh/
feed.cnblogs.com
https://www.cnblogs.com/linyizsh/archive/2011/03/22/1991343.html
t&h - linyizsh
老久没更新,发点吧,让前面一篇降下去。* 在D9下,SetStreamSource/DrawIndexedPrimitive,这几个参数的意思,久了经常忘记。OffsetInBytes: 设置VB的数据从哪一个位置开始,即IB里的第0个顶点,从这个地址开始算起。BaseVertexIndex: IB里的每个索引,加上这个数值,比如设置了2,则IB里的5会变成7。。。不太常用,但有时候会有意想不到的作用。 MinVertexIndex: 告诉D3D,使用到的顶点从VB里的第几个开始,设置之后,对渲染无影响,只是帮助D3D在某些时候改进性能。。。 NumVertices: 告诉D3D,本次DP,.
2011-03-22T05:43:00Z
2011-03-22T05:43:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】老久没更新,发点吧,让前面一篇降下去。* 在D9下,SetStreamSource/DrawIndexedPrimitive,这几个参数的意思,久了经常忘记。OffsetInBytes: 设置VB的数据从哪一个位置开始,即IB里的第0个顶点,从这个地址开始算起。BaseVertexIndex: IB里的每个索引,加上这个数值,比如设置了2,则IB里的5会变成7。。。不太常用,但有时候会有意想不到的作用。 MinVertexIndex: 告诉D3D,使用到的顶点从VB里的第几个开始,设置之后,对渲染无影响,只是帮助D3D在某些时候改进性能。。。 NumVertices: 告诉D3D,本次DP,. <a href="https://www.cnblogs.com/linyizsh/archive/2011/03/22/1991343.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/12/05/1896882.html
MTE - linyizsh
2010-12-05T06:26:00Z
2010-12-05T06:26:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】 <a href="https://www.cnblogs.com/linyizsh/archive/2010/12/05/1896882.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/10/23/1859514.html
Best fit gbuffer normal - linyizsh
http://advances.realtimerendering.com/。crytek总是能发现一些别人没发现的东西。之前我也发过http://www.cnblogs.com/linyizsh/archive/2009/05/30/1492314.html说过些packnormal的东西。但是从直觉上,无论哪种方法,总是觉得不怎么完美,一个是计算量太大,一个是存储bit数太多,如果使用类似de...
2010-10-23T14:03:00Z
2010-10-23T14:03:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】http://advances.realtimerendering.com/。crytek总是能发现一些别人没发现的东西。之前我也发过http://www.cnblogs.com/linyizsh/archive/2009/05/30/1492314.html说过些packnormal的东西。但是从直觉上,无论哪种方法,总是觉得不怎么完美,一个是计算量太大,一个是存储bit数太多,如果使用类似de... <a href="https://www.cnblogs.com/linyizsh/archive/2010/10/23/1859514.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/10/17/1853639.html
Mipmap不连续问题。 - linyizsh
一个容易疏忽的问题。图: 模型的边缘有个碍眼的白边,这个是由于计算水下的caustic的时候用了深度来计算某个tex的uv,结果产生这个白边。(图压缩后变难看了。。。)这个不是算法错,也不是什么数据问题。而是由于使用的tex带有mipmap,但由于uv从深度算来,因此在ps里,边缘相邻两个像素的uv有个跳变,使gpu在这个地方出现lod计算错误,因此取了一个错误的值。 解决的办法有两个,一个是自己...
2010-10-17T07:41:00Z
2010-10-17T07:41:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】一个容易疏忽的问题。图: 模型的边缘有个碍眼的白边,这个是由于计算水下的caustic的时候用了深度来计算某个tex的uv,结果产生这个白边。(图压缩后变难看了。。。)这个不是算法错,也不是什么数据问题。而是由于使用的tex带有mipmap,但由于uv从深度算来,因此在ps里,边缘相邻两个像素的uv有个跳变,使gpu在这个地方出现lod计算错误,因此取了一个错误的值。 解决的办法有两个,一个是自己... <a href="https://www.cnblogs.com/linyizsh/archive/2010/10/17/1853639.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/08/30/1813091.html
MLAA(Morphological Antialiasing) - linyizsh
试了mlaa,后处理的aa。 最初的文档是intel发布http://visual-computing.intel-research.net/publications/papers/2009/mlaa/mlaa.pdf,只有cpu实现。 后来有人做了gpu版本http://igm.univ-mlv.fr/~biri/mlaa-gpu/,有篇paper,不过跟没有差不多,似乎还有个siggraph的...
2010-08-30T15:36:00Z
2010-08-30T15:36:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】试了mlaa,后处理的aa。 最初的文档是intel发布http://visual-computing.intel-research.net/publications/papers/2009/mlaa/mlaa.pdf,只有cpu实现。 后来有人做了gpu版本http://igm.univ-mlv.fr/~biri/mlaa-gpu/,有篇paper,不过跟没有差不多,似乎还有个siggraph的... <a href="https://www.cnblogs.com/linyizsh/archive/2010/08/30/1813091.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/05/08/1730235.html
Volumetric Obscurance - linyizsh
原文为了看起来像一个论文,所以写的洋洋洒洒,引经据典,其实在我看来SSAO本身就只是一种tip,没必要那么啰嗦,关键的东西说来就两句话,在每个像素为中心的球体内,发射与屏幕垂直的n条线,计算每条线在这个球体范围内有多少被zbuffer遮挡,再按比例加起来作为AO。放点图,10次sample,但只做了一次2x2的blur,所以质量不太好,但速度确实比以前的方法快,提高blur的kernel可以提高质...
2010-05-07T18:58:00Z
2010-05-07T18:58:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】原文为了看起来像一个论文,所以写的洋洋洒洒,引经据典,其实在我看来SSAO本身就只是一种tip,没必要那么啰嗦,关键的东西说来就两句话,在每个像素为中心的球体内,发射与屏幕垂直的n条线,计算每条线在这个球体范围内有多少被zbuffer遮挡,再按比例加起来作为AO。放点图,10次sample,但只做了一次2x2的blur,所以质量不太好,但速度确实比以前的方法快,提高blur的kernel可以提高质... <a href="https://www.cnblogs.com/linyizsh/archive/2010/05/08/1730235.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/02/03/1663022.html
ao propagation volume... - linyizsh
这个是名字是我乱起的:)。。。发了上一篇之后突然想到,既然radiance volume可以做能量传递,那或许也可以做为ao的传递,因为ao信息也是低频的,于是有这个名字。。。 改一下lpv的过程,不要生成rsm,而是直接将mesh写入volume,生成的时候关掉ztest和zwrite,直接写入到对应的位置。只需用位置和normal即可,同样把信息投影到sh。propagation 过程一样,只...
2010-02-03T14:01:00Z
2010-02-03T14:01:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】这个是名字是我乱起的:)。。。发了上一篇之后突然想到,既然radiance volume可以做能量传递,那或许也可以做为ao的传递,因为ao信息也是低频的,于是有这个名字。。。 改一下lpv的过程,不要生成rsm,而是直接将mesh写入volume,生成的时候关掉ztest和zwrite,直接写入到对应的位置。只需用位置和normal即可,同样把信息投影到sh。propagation 过程一样,只... <a href="https://www.cnblogs.com/linyizsh/archive/2010/02/03/1663022.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2010/02/03/1662310.html
lpv - linyizsh
测试了Light Propagation Volumes,全实时没有任何预处理的GI,而且可以适用任意场景。文档很长,不过基本原理还是比较直白的: 生成reflect shadow map(rsm)。 将rsm信息用SH系数方式注入一个volumetexture中。 在volumetexture中进行propagation(大概叫传递或者传播的意思)。 最后将propagation完的volume...
2010-02-02T16:12:00Z
2010-02-02T16:12:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】测试了Light Propagation Volumes,全实时没有任何预处理的GI,而且可以适用任意场景。文档很长,不过基本原理还是比较直白的: 生成reflect shadow map(rsm)。 将rsm信息用SH系数方式注入一个volumetexture中。 在volumetexture中进行propagation(大概叫传递或者传播的意思)。 最后将propagation完的volume... <a href="https://www.cnblogs.com/linyizsh/archive/2010/02/03/1662310.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2009/05/30/1492314.html
说下pack/unpack normal的问题 - linyizsh
现在很多延迟光照算法,都有保存normal的pass,为了节约资源,很多有把normal三个分量pack为两个分量的算法,以d3d的左手坐标为例,normal在camera空间。 最开始有:pack:xy = norm.xy; unpack:norm.xy = xy; norm.z = -sqrt(1 - x^2 - y^2); 这个方法开始用的很广泛,但它是错的,因为由于透视投影的关系,有些面...
2009-05-30T09:03:00Z
2009-05-30T09:03:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】现在很多延迟光照算法,都有保存normal的pass,为了节约资源,很多有把normal三个分量pack为两个分量的算法,以d3d的左手坐标为例,normal在camera空间。 最开始有:pack:xy = norm.xy; unpack:norm.xy = xy; norm.z = -sqrt(1 - x^2 - y^2); 这个方法开始用的很广泛,但它是错的,因为由于透视投影的关系,有些面... <a href="https://www.cnblogs.com/linyizsh/archive/2009/05/30/1492314.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2008/10/11/1308484.html
CheckPoint - linyizsh
到今天为止,我已经实现了一个比较完整的延迟着色(ds)渲染器,包括各种各样的类型的处理和融合opaque,translucent,mirror reflect,cube reflect, terrain,sky,particle,primitive,ui,postprocess(hdr,dof,lightshaft, ssao)等。国内很少有人做基于ds的渲染,导致我找不到人讨论,一直都只好到国外...
2008-10-10T18:16:00Z
2008-10-10T18:16:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】到今天为止,我已经实现了一个比较完整的延迟着色(ds)渲染器,包括各种各样的类型的处理和融合opaque,translucent,mirror reflect,cube reflect, terrain,sky,particle,primitive,ui,postprocess(hdr,dof,lightshaft, ssao)等。国内很少有人做基于ds的渲染,导致我找不到人讨论,一直都只好到国外... <a href="https://www.cnblogs.com/linyizsh/archive/2008/10/11/1308484.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2008/10/11/1308452.html
修改crysis支持nvperfhud - linyizsh
其实对熟悉反汇编的人来说并不难,本来用hook也可以,不过crysis是通过CryRenderD3D9.dll显式加载d3d9.dll,IAT表中没有相关地址,hook比较麻烦。所以我还是修改反汇编来做。 首先我们需要确定d3d9.dll中Direct3DCreate9的地址,d3d9是系统模块,地址固定,很多工具可以查,没有工具也可以,LoadLibrary即可得到d3d9.dll的地址,然后G...
2008-10-10T16:05:00Z
2008-10-10T16:05:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】其实对熟悉反汇编的人来说并不难,本来用hook也可以,不过crysis是通过CryRenderD3D9.dll显式加载d3d9.dll,IAT表中没有相关地址,hook比较麻烦。所以我还是修改反汇编来做。 首先我们需要确定d3d9.dll中Direct3DCreate9的地址,d3d9是系统模块,地址固定,很多工具可以查,没有工具也可以,LoadLibrary即可得到d3d9.dll的地址,然后G... <a href="https://www.cnblogs.com/linyizsh/archive/2008/10/11/1308452.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2008/03/30/1130256.html
volume light/light shaft/god ray - linyizsh
试了gpugems3中的方法。方法很简单,将一张遮挡后的明暗图做一些sample,再调整一下,add到原先的target上。有意思的是其实我在2004年的时候就在一个项目中看到一个老外用了这种方法,当时也没放在心上,没想到现在会出现在gpugem3上。不过这种方法其实只是近似的做了一些处理,使挡住光源的物体造成lightshaft的效果,没有利用到深度的信息,还不是真正的“volume...
2008-03-30T14:06:00Z
2008-03-30T14:06:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】试了gpugems3中的方法。方法很简单,将一张遮挡后的明暗图做一些sample,再调整一下,add到原先的target上。有意思的是其实我在2004年的时候就在一个项目中看到一个老外用了这种方法,当时也没放在心上,没想到现在会出现在gpugem3上。不过这种方法其实只是近似的做了一些处理,使挡住光源的物体造成lightshaft的效果,没有利用到深度的信息,还不是真正的“volume... <a href="https://www.cnblogs.com/linyizsh/archive/2008/03/30/1130256.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2008/01/25/1053739.html
小更新下,加了DOF - linyizsh
2008-01-25T13:05:00Z
2008-01-25T13:05:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】 <a href="https://www.cnblogs.com/linyizsh/archive/2008/01/25/1053739.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2008/01/24/1052196.html
DeferShading + VSM + HDR + SSAO - linyizsh
半年以上没有更新了,修修改改,Graphenix渲染过程。 首先是深度pass,这个pass可以只做depth write,虽然也可以通过其它方式在lighting阶段重建某个空间中的position来计算,不过我在这里直接输出了eyespace的position,因为后面可以省下很多力气重算位置,而且如果拆成两个pass,速度甚至会下降。眼空间position:Gbuffer pass,全部在e...
2008-01-24T14:55:00Z
2008-01-24T14:55:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】半年以上没有更新了,修修改改,Graphenix渲染过程。 首先是深度pass,这个pass可以只做depth write,虽然也可以通过其它方式在lighting阶段重建某个空间中的position来计算,不过我在这里直接输出了eyespace的position,因为后面可以省下很多力气重算位置,而且如果拆成两个pass,速度甚至会下降。眼空间position:Gbuffer pass,全部在e... <a href="https://www.cnblogs.com/linyizsh/archive/2008/01/24/1052196.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/05/20/753286.html
CheckPoint d3d10 - linyizsh
最近没有做到什么实质上的东西,在看d3d10的接口,准备对自己的简单引擎重新构架渲染库。相比起来,d10对资源的组织比d9清晰了不少,IA,VS,GS,SO,RS,PS,OM各种资源现在都围绕流水线各步骤组织和命名,并且模块化,以前用d9中我们需要花不少力气在自己的引擎中组织这些东西,相信以后的引擎对于渲染资源的组织会省下一些工夫。另外资源的重新组织也带来了一些好处,比如Texture和Sampl...
2007-05-20T09:04:00Z
2007-05-20T09:04:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】最近没有做到什么实质上的东西,在看d3d10的接口,准备对自己的简单引擎重新构架渲染库。相比起来,d10对资源的组织比d9清晰了不少,IA,VS,GS,SO,RS,PS,OM各种资源现在都围绕流水线各步骤组织和命名,并且模块化,以前用d9中我们需要花不少力气在自己的引擎中组织这些东西,相信以后的引擎对于渲染资源的组织会省下一些工夫。另外资源的重新组织也带来了一些好处,比如Texture和Sampl... <a href="https://www.cnblogs.com/linyizsh/archive/2007/05/20/753286.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/04/17/717444.html
放几张美图 - linyizsh
2007-04-17T14:46:00Z
2007-04-17T14:46:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】 <a href="https://www.cnblogs.com/linyizsh/archive/2007/04/17/717444.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/04/01/696275.html
4.1 - linyizsh
发完前面那个文章一看才知道是4.1号,呵呵。顺便说句,计算机计算积分的几种方式。如果是简单积分或者有固定值,能够得到积分后函数则最好。另一种是画图表,然后用其他容易表示的函数来近似。还有一种是将积分看为曲线,分段计算它的值,然后乘于各段的长度,再相加。另外一种是展开为多项式,截项近似。最后没办法的办法,只好做查找表。
2007-04-01T13:26:00Z
2007-04-01T13:26:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】发完前面那个文章一看才知道是4.1号,呵呵。顺便说句,计算机计算积分的几种方式。如果是简单积分或者有固定值,能够得到积分后函数则最好。另一种是画图表,然后用其他容易表示的函数来近似。还有一种是将积分看为曲线,分段计算它的值,然后乘于各段的长度,再相加。另外一种是展开为多项式,截项近似。最后没办法的办法,只好做查找表。 <a href="https://www.cnblogs.com/linyizsh/archive/2007/04/01/696275.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/04/01/696270.html
Atmospheric Scattering - linyizsh
以前由于硬件限制,很多游戏的天空和地面颜色主要是用贴图模拟,近来硬件的发展,越来越多的游戏开始采用基于比较真实的大气散射模型来实时计算。很多文章的计算最终都将眼睛高度和角度作为参数,这里主要按照Sean O’Neil系列的方法来(其实它也是Nishita的改进)。 原理可以简单归结为:光从大气外圈,散射之后进入眼睛。散射本身是一种衰减行为,由于星球通常离太阳比较远,所以我们近似认为在大...
2007-04-01T13:23:00Z
2007-04-01T13:23:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】以前由于硬件限制,很多游戏的天空和地面颜色主要是用贴图模拟,近来硬件的发展,越来越多的游戏开始采用基于比较真实的大气散射模型来实时计算。很多文章的计算最终都将眼睛高度和角度作为参数,这里主要按照Sean O’Neil系列的方法来(其实它也是Nishita的改进)。 原理可以简单归结为:光从大气外圈,散射之后进入眼睛。散射本身是一种衰减行为,由于星球通常离太阳比较远,所以我们近似认为在大... <a href="https://www.cnblogs.com/linyizsh/archive/2007/04/01/696270.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/03/06/666119.html
prt - linyizsh
简单说下,目前是逐顶点计算,随便造的模型,顶点数比较少,效果并不好。用的是sh函数,将光照函数和传输函数分别投影到sh基函数上,得到系数,在shader中做点积,旋转采用的是《Rotation Matrices for Real Spherical Harmonics. Direct Determination by Recursion》中的方法。
2007-03-06T14:47:00Z
2007-03-06T14:47:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】简单说下,目前是逐顶点计算,随便造的模型,顶点数比较少,效果并不好。用的是sh函数,将光照函数和传输函数分别投影到sh基函数上,得到系数,在shader中做点积,旋转采用的是《Rotation Matrices for Real Spherical Harmonics. Direct Determination by Recursion》中的方法。 <a href="https://www.cnblogs.com/linyizsh/archive/2007/03/06/666119.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/linyizsh/archive/2007/02/16/651615.html
ZT - linyizsh
曾有魏文王问名医扁鹊说:“你们家兄弟三人,都精于医术,到底哪一位最好呢?”扁鹊答说:“长兄最好,中兄次之,我最差。”文王再问:“那么为什么你最出名呢?”扁鹊答说:“我长兄治病,是治病于病情发作之前。由于一般人不知道他事先能铲除病因,所以他的名气无法传出去,只有我们家的人才知道。我中兄治病,是治病于病情初起之时。一般人以为他只能治轻微的小病,所以他的名气只及于本乡里。而我扁鹊治病,是治病于病...
2007-02-16T06:38:00Z
2007-02-16T06:38:00Z
linyizsh
https://www.cnblogs.com/linyizsh/
【摘要】曾有魏文王问名医扁鹊说:“你们家兄弟三人,都精于医术,到底哪一位最好呢?”扁鹊答说:“长兄最好,中兄次之,我最差。”文王再问:“那么为什么你最出名呢?”扁鹊答说:“我长兄治病,是治病于病情发作之前。由于一般人不知道他事先能铲除病因,所以他的名气无法传出去,只有我们家的人才知道。我中兄治病,是治病于病情初起之时。一般人以为他只能治轻微的小病,所以他的名气只及于本乡里。而我扁鹊治病,是治病于病... <a href="https://www.cnblogs.com/linyizsh/archive/2007/02/16/651615.html" target="_blank">阅读全文</a>