游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3358|回复: 6

怎样避免实时渲染中的闪烁问题?

[复制链接]

10

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2011-5-3 11:35:00 | 显示全部楼层 |阅读模式
RT

Desc: 我现在正在渲染一个超大的场景,要想在一个窗口中看到整个场景,需要将摄像机的远平面设置为1000000.0f(1e6f)才行。但是这样会导致由于浮点数计算精度影响到像素点的深度测试,从而导致在实时渲染过程中部分像素出现闪烁的问题。

Ask: 我想请问在保证能在同一个窗口中浏览整个场景的情况下,有什么方法能够有效的避免部分像素的闪烁?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2011-5-3 11:47:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

我一般是 near设置为0.6,far设置为200。(单位是“米”)
你的居然是“一百万”!如果是这样,你的near就得是1000左右才行。

还有,贴图可以采用 mipmap,远处的自动变得模糊。

10

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2011-5-3 12:37:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

至于为什么会出现一百万级是因为我用D3D空间中的1.0f表示实际距离中的1mm,所以在大场景显示时会出现百万级的计数。

将near平面设置成1000在摄像机离场景较远的情况下倒是可以在一定程度上避免闪烁的问题。但仍有个问题,我的摄像机可以拉到离场景很近的位置(观察点距离摄像机也就100.0f左右),在这种情况下的话near设置1000.0f会出现裁切。为了避免出现裁切的情况,我是否还得同时实时更新near和far平面?!如果要同时更新的话,又应该依据什么来更新呢?(摄像机到场景中心的距离?或是根据摄像机Ray求出与场景的交点,再根据交点到摄像机的距离来设置near和far平面?但这样每帧的开销应该挺大的吧)

对了,补充一下,我渲染的场景并不是地形,所以没有做摄像机与场景的碰撞检测,所以才有可能出现摄像机平台截体裁切场景的现象。

9

主题

132

帖子

145

积分

注册会员

Rank: 2

积分
145
QQ
发表于 2011-5-12 18:05:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

   深度用24D8S

2

主题

14

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2011-5-17 10:29:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

depth fighting
DX的处理方式3种:
第一种方法:Projection Matrix
第二种方法:ViewPort
第三种方法:Depth Bias

希望有所帮助

10

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
 楼主| 发表于 2011-5-18 16:06:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

最后还是采用了一个本办法,实时更新了near和far值,求交的时候用了一个近似场景的简模。在不开启Vsync的情况下,帧数和原来相差不大,反正画面看着还是很流畅的=。=

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2011-6-15 01:43:00 | 显示全部楼层

Re:怎样避免实时渲染中的闪烁问题?

如果同时有很近的物体和很远的物体,可以考虑渲染两遍。先画一遍远的,用很远的nearplane,然后画近的,用刚刚的nearplane做farplane
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 11:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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