游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5989|回复: 7

Fresnel效果和颜色色散(Using OpenGL & Cg)

[复制链接]

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
发表于 2005-9-11 19:36:00 | 显示全部楼层 |阅读模式
1.Fresnel效果

一般来说,当光到达2种材质的接触面时,一些光在接触面的表面被反射出去,而另一部分光将发生折射穿过接触面,这个现象称为Fresnel效果。Fresnel公式描述了多少光被反射和多少光被折射。下面是Fresnel公式的一个近似:

reflectionCoefficient=max(0,min(1,bias+scale×(1+I·N)power))

反射系数reflectionCoefficient的范围被限制在[0,1]之间,我们根据下面的公式使用reflectionCoefficient来混合反射和折射向量(C代表颜色):

CFinal=reflectionCoefficient×CReflected+(1-reflectionCoefficient)×CRefracted

2.颜色色散

折射量除了基于表面法向量、入射角和折射系数比率外,还决定于入射光的波长。例如,红光要比蓝光折射得多,这个现象称为颜色色散(chromatic dispersion)。这就是为什么当白光进入棱镜会形成一个彩虹的原因。

真正的光有一个波段的波长,而不仅仅只有3个特殊的离散波长。但我们可以近似地只模拟光的红、绿和蓝色分量的波长。实践证明,这种近似是有效的。

结合了颜色色散的Fresnel效果将创建一种彩虹效果,就好像被渲染的物体是由水晶做成的一样。

本程序中,fresnelBias=0.1,fresnelScale=0.3,fresnelPower=0.2

(1). Red_etaRatio=1.10,Green_etaRatio=1.12,Blue_etaRatio=1.14时:

(2). Red_etaRatio=0.0,Green_etaRatio=1.12,Blue_etaRatio=0.0时:


程序下载(由于空间的原因,没包含cg.dll和cgGL.dll运行库文件,没有的可以到nVidia网站上去下载):

cg_fres_disper.part1.rar
cg_fres_disper.part2.rar

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
 楼主| 发表于 2005-9-12 16:21:00 | 显示全部楼层

Re: Fresnel效果和颜色色散(Using OpenGL & Cg)

谢谢!我试一下!

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
 楼主| 发表于 2005-9-12 19:56:00 | 显示全部楼层

Re: Fresnel效果和颜色色散(Using OpenGL & Cg)

我用per fragment实现了一下,效果确实好多了。

这是per fragment的:


这是per vertex的:



可以看出,帧率下降很严重,计算要耗时得多。

73

主题

149

帖子

185

积分

注册会员

Rank: 2

积分
185
 楼主| 发表于 2005-9-13 15:15:00 | 显示全部楼层

Re: Fresnel效果和颜色色散(Using OpenGL & Cg)

这个应该差不多了吧,经典的茶壶,呵呵
sf_2005913151441.jpg

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-9-13 16:41:00 | 显示全部楼层

Re: Fresnel效果和颜色色散(Using OpenGL & Cg)

哈哈 我也来分一杯
sf_2005913164044.jpg

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-9-13 16:42:00 | 显示全部楼层

Re: Fresnel效果和颜色色散(Using OpenGL & Cg)

DX9.0 +HLSL  用ps2.0 嘻嘻
sf_200591316425.jpg

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2005-9-15 09:14:00 | 显示全部楼层

Re:Fresnel效果和颜色色散(Using OpenGL & Cg)

to robinmarian
耶,小伙,拿Fresnel色散到处贴说

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-9-17 14:42:00 | 显示全部楼层

Re: Re:Fresnel效果和颜色色散(Using OpenGL & Cg)

sunicdavy: Re:Fresnel效果和颜色色散(Using OpenGL & Cg)

to robinmarian
耶,小伙,拿Fresnel色散到处贴说

哈哈 是哦 大家交流下3  [em2] [em2] [em2]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-27 20:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表