Board logo

标题: 联动贴:教你5分钟学会实时大气散射 [打印本页]

作者: hourousha    时间: 2007-3-15 11:57     标题: 联动贴:教你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();
完毕~
作者: 今天星期四    时间: 2007-3-15 11:59

楼主胡说
按照你的帖子
我除了放了一个屁
没向大气散射出任何东西!!!
作者: xbgbmpsp    时间: 2007-3-15 12:02

因为裤子!裤子!:D
作者: hourousha    时间: 2007-3-15 12:05

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

今天果然都是闲的蛋痛
作者: hourousha    时间: 2007-3-15 12:20

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

作者: Shin    时间: 2007-3-15 12:27

为什么系列
教你做什么系列

TG就是一个传道授业解惑的地方呀!
作者: hourousha    时间: 2007-3-15 12:30

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

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

书写风格不错,=号左右还有空格 老纳甘拜下风 233max
作者: Jonsoncao    时间: 2007-3-15 12:36

引用:
原帖由 hourousha 于 2007-3-15 12:20 发表
MB不象话,这么有水准的,连GT小组都‘可能’搞不定的东西都没人感兴趣啊,世风日下啊
那只好拿出杀手锏了,2秒钟教你学会C语言编程,看好了

int main(int argc,char* argv[])
{
    return 0;
}
no header file
no namespace
作者: DigMoonX    时间: 2007-3-15 12:37

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


no header file
no namespace
创建工程就有了
作者: 今天星期四    时间: 2007-3-15 12:38

标题应该改成:是男人就散射5分钟!

这样围观的人就多了
作者: Jonsoncao    时间: 2007-3-15 12:39

楼主你干嘛趟今天的浑水

而且你说的大部分索饭也看不懂,达不到教育效果
作者: DigMoonX    时间: 2007-3-15 12:39

:D 我们对索青要有爱:D

教育什么都是假的,爱他们才是真的
作者: Jonsoncao    时间: 2007-3-15 12:40

既然爱他们为什么还要发这种帖子,令我很失望
作者: carnon    时间: 2007-3-15 12:42

因为淌混水才好玩啊:D
作者: hourousha    时间: 2007-3-15 12:43

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


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

BTW:我还真不知道在C语言中也要用namespace,在我看来那是在C++中的东西——C和C++本就是两种不同的东西。
作者: hourousha    时间: 2007-3-15 12:45

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

2秒钟教会你 MATLAB6 SIMULINK
现在我需要这个.
作者: BD    时间: 2007-3-15 17:49

引用:
原帖由 Jonsoncao 于 2007-3-15 12:39 发表
楼主你干嘛趟今天的浑水

而且你说的大部分索饭也看不懂,达不到教育效果
小老虎炫耀逻辑!

同理:绝大部分软饭也看不懂,同样达不到教育的效果
作者: 788414    时间: 2007-3-15 17:52

为什么为什么
作者: RestlessDream    时间: 2007-3-15 17:52

引用:
原帖由 BD 于 2007-3-15 17:49 发表
小老虎炫耀逻辑!

同理:绝大部分软饭也看不懂,同样达不到教育的效果
软饭和索饭第一次达成共识了?

可喜可贺呀
作者: 瞎玩玩    时间: 2007-3-15 17:53

c++代码 加 编译基础 教学贴.
作者: sowo    时间: 2007-3-15 18:02

今天psi大神让TG热闹非凡啊:D
作者: Eiko    时间: 2007-3-15 18:18

引用:
原帖由 hourousha 于 2007-3-15 11:57 发表
联动一下——http://www.tgfcer.com/club/thread-5850872-1-1.html
随便写了一下,呵呵,下面是最重要的部分。

float4 LSDSPS(const PS_INPUTDS Input):COLOR0
{
        const float Pi = 3.14159265;
        float ...
这是什么语法?为什么有个 :COLOR0 ?
请搂主指点
作者: sdlzqlzq    时间: 2007-3-15 18:21

怎么看着象对显卡可变成模块的算法~~~~但是又好象没什么关系~~~
作者: sdlzqlzq    时间: 2007-3-15 18:42

好长时间没看这东西~~~刚翻了下~~看来就是HLSL语言~~~(就是种在可编程显卡上使用的渲染着色语言~~~直接操作显卡的硬件设置优化算法~~)
作者: sdlzqlzq    时间: 2007-3-15 18:59

引用:
原帖由 Eiko 于 2007-3-15 18:18 发表


这是什么语法?为什么有个 :COLOR0 ?
请搂主指点
反回值修饰~~~编译器把函数返回值作为第一组(0的含义)像素的颜色值


希望我没记错
作者: RacingPHT    时间: 2007-3-15 19:37

h兄我也看不懂
作者: carnon    时间: 2007-3-15 19:44

有c++基础的都应该看得明白代码,虽然算法结构不懂:D
作者: Eiko    时间: 2007-3-15 19:53

引用:
原帖由 sdlzqlzq 于 2007-3-15 18:59 发表


反回值修饰~~~编译器把函数返回值作为第一组(0的含义)像素的颜色值


希望我没记错
这样啊,果然是硬件编程语言么
张口C,C++的tgfcer们都露陷了
作者: hourousha    时间: 2007-3-15 20:21

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

老兄别拿我开玩笑了,这不就是ATI2003年那篇paper中算法的Deferred shading实现版本么?:D
作者: 备常炭    时间: 2007-3-15 20:25

引用:
张口C,C++的tgfcer们都露陷了
:D :D :D
作者: liuyicheng    时间: 2007-3-15 20:29


你太没有爱了,尤其是对PSI同志没有爱。。。
作者: RacingPHT    时间: 2007-3-15 21:09

引用:
原帖由 hourousha 于 2007-3-15 20:21 发表


老兄别拿我开玩笑了,这不就是ATI2003年那篇paper中算法的Deferred shading实现版本么?:D
:D 补课补课.. 这个还是比动态光源难一点的...

ps: 俺当初刚学OGL的时候(2002?)竟然还在菜鸟论坛上和你战过, 世界果然是小啊...
作者: RestlessDream    时间: 2007-3-15 21:15

在这贴里苦等PSI同学奉献爱……
作者: hourousha    时间: 2007-3-15 21:30

引用:
原帖由 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是?
作者: psi    时间: 2007-3-15 21:30

爱来了


作者: 比卡丘    时间: 2007-3-15 22:12


作者: RestlessDream    时间: 2007-3-15 22:18

没记错的话,这图是根据PS3价格公布图改的吧~:D
作者: Jonsoncao    时间: 2007-3-16 00:27

图湿!
作者: psi    时间: 2007-3-16 05:38

引用:
原帖由 RestlessDream 于 2007-3-15 22:18 发表
没记错的话,这图是根据PS3价格公布图改的吧~:D
你也会火星到如此地步,连此图出处都不知道吗




欢迎光临 TGFC Lifestyle (http://tgfcer.com/) Powered by Discuz! 6.0.0