游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: nocture

Shader开发交流贴:像素高光效果的实现

[复制链接]

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-10-28 12:40:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

有些复杂的材质效果不是乘方能够做出来的。。。

20

主题

473

帖子

502

积分

高级会员

Rank: 4

积分
502
发表于 2005-10-28 15:18:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

按你自己写的方法,就是很基本的blinn光照模型
那么specular = pow(max((n.h), 0), shi), 其中shi就是指数
用ps计算得到的结果精度自然比8位纹理要来得高

1

主题

51

帖子

51

积分

注册会员

Rank: 2

积分
51
发表于 2005-10-28 15:19:00 | 显示全部楼层

Re: Re:Shader开发交流贴:像素高光效果的实现

nocture: Re:Shader开发交流贴:像素高光效果的实现

效果的问题主要还是精度问题,看ATI的说法是用32位纹理来解决。


你的问题是用了多pass
ps2.0以上的GPU,应该使用单Pass,因为temp reg的精度高于Texture.

14

主题

131

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2005-10-30 14:07:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

好文

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-10-31 09:16:00 | 显示全部楼层

Re: Re:Shader开发交流贴:像素高光效果的实现

secondage: Re:Shader开发交流贴:像素高光效果的实现

按你自己写的方法,就是很基本的blinn光照模型
那么specular = pow(max((n.h), 0), shi), 其中shi就是指数
用ps计算得到的结果精度自然比8位纹理要来得高


对,精度问题的确就是8位CubeMap纹理归一化时带来的,如果不想采用PS2.0来归一化,则可以改用新的方法,就是建立一块N Dot H / H Dot H纹理,把N Dot H值作为U坐标,把H Dot H值作为V坐标,纹理颜色R = Pow( N Dot H / sqrt( H Dot H ), 镜面指数K ),然后PS就将归一化省去,直接用N Dot H和H Dot H作为纹理坐标查找这块纹理,直接将归一化和指数化合二为一。效果如下。不再出现离散的色斑
sf_2005103191535.jpg

36

主题

100

帖子

725

积分

高级会员

Rank: 4

积分
725
发表于 2005-11-1 13:20:00 | 显示全部楼层

Re: Shader开发交流贴:像素高光效果的实现

N Dot H和H Dot H作为纹理坐标,如何保证UV的值是0到1呢?

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-11-1 13:38:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

你只要保证H和N的模都在0-1就可以了,然后利用dp3_sat进行运算

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-11-1 13:45:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

如果对纹理UV坐标使用了D3DTADDRESS_CLAMP模式,则_sat也没有必要使用,直接dp3即可

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-9-5 21:48:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

二、计算Halfway Vector(中间向量、中途向量),HalfwayVec = Normalize( EyeVec + LightVec ),其中LightVec的方向是从光照处指向灯光,该向量表示了在当前眼睛所在位置,该像素若发生高光全反射时的法向量(即HalfwayVec)

请问EyeVec和 LightVec 指的是什么?怎样计算得到?

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2006-9-5 22:05:00 | 显示全部楼层

Re:Shader开发交流贴:像素高光效果的实现

请问高光效果是怎么实现的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 07:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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