» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

联动贴:教你5分钟学会实时大气散射

联动一下——http://www.tgfcer.com/club/thread-5850872-1-1.html
随便写了一下,呵呵,下面是最重要的部分。
复制内容到剪贴板
代码:
float4 LSDSPS(const PS_INPUTDS Input):COLOR0
{
        const float Pi = 3.14159265;
        float Depth = tex2D(DepthSampler,Input.vTexCoord.xy).x;
        float4 L0 = tex2D(DiffuseSampler,Input.vTexCoord.xy);
        float3 normal = tex2D(NormalSampler,Input.vTexCoord.xy).xyz;
        normal = normal.xyz*2.0-float3(1.0,1.0,1.0);
        L0.xyz *= saturate(mul(SunDir.xyz,normal));
        float3 View = float3(Depth*Input.vTexCoord.wz,Depth);
        float3 Eext = SunColor.xyz*TerrainReflect;
        float dist = length(View.xyz);
        float costheta = mul(SunDir.xyz,normalize(View.xyz).xyz);
        float3 pindex = NegBetaPlus.xyz*dist;
        float3 Fex = exp(pindex.xyz);
        L0.xyz *= Eext;
        L0.xyz *= Fex;
        float3 BetaRTheta = (3.0/(16.0*Pi))*BetaRay.xyz*(1.0+costheta*costheta);
        float3 BetaMTheta = BetaMie.xyz*(1.0/(4.0*Pi))*Hcg.x/pow(Hcg.y-Hcg.z*costheta,1.5);
        float3 Lin = SunColor.xyz*(BetaMTheta+BetaRTheta).xyz*InvBetaPlus.xyz*(float3(1.0,1.0,1.0)-Fex.xyz).xyz;
        return float4(L0.xyz+Lin.xyz*ExtInMulti.y,L0.w);
}
顺便附上大礼,10秒钟学会XO的predicate tiling
复制内容到剪贴板
代码:
BeginTiling(..);
.......
EndTiling();
完毕~


TOP

引用:
原帖由 xbgbmpsp 于 2007-3-15 12:02 发表
因为裤子!裤子!:D
然也~:D



TOP

MB不象话,这么有水准的,连GT小组都‘可能’搞不定的东西都没人感兴趣啊,世风日下啊
那只好拿出杀手锏了,2秒钟教你学会C语言编程,看好了
复制内容到剪贴板
代码:
int main(int argc,char* argv[])
{
    return 0;
}


TOP

引用:
原帖由 Shin 于 2007-3-15 12:27 发表
为什么系列
教你做什么系列

TG就是一个传道授业解惑的地方呀!
在‘教你’二字之前还必须得加个‘5分钟、10秒钟’之类,这才能体现人类的智慧的无限啊:D

TOP

引用:
原帖由 Jonsoncao 于 2007-3-15 12:36 发表


no header file
no namespace
靠,不是说了是2秒钟学会的么?还要什么自行车啊。这东西没header也能编译通过啊:D

BTW:我还真不知道在C语言中也要用namespace,在我看来那是在C++中的东西——C和C++本就是两种不同的东西。

TOP

引用:
原帖由 Jonsoncao 于 2007-3-15 12:40 发表
既然爱他们为什么还要发这种帖子,令我很失望
对不起,我错了

TOP

引用:
原帖由 RacingPHT 于 2007-3-15 19:37 发表
h兄我也看不懂

老兄别拿我开玩笑了,这不就是ATI2003年那篇paper中算法的Deferred shading实现版本么?:D

TOP

引用:
原帖由 RacingPHT 于 2007-3-15 21:09 发表


:D 补课补课.. 这个还是比动态光源难一点的...

ps: 俺当初刚学OGL的时候(2002?)竟然还在菜鸟论坛上和你战过, 世界果然是小啊...
查了一下,那paper是02不是03年的
http://ati.amd.com/developer/gdc/2002/GDC_02_HoffmanPreetham.pdf
ATI的demo
http://ati.amd.com/developer/samples/Scattering.zip
代码中有一处数组越界(Vec4赋值给Vec3,Debug可以轻松发现)faint。DX8实现的这是。
后来在鬼武者3中也有该方法的实现,是post processing的方式,用PS2的LUT color format代替dependent texture fetch。
http://www.watch.impress.co.jp/game/docs/20030916/oni3_2.htm

啊?当初我还和老兄战过?我完全没印象啊?老兄当初的ID是?

TOP

发新话题
     
官方公众号及微博