Home › Forums › Games202-高质量实时渲染 › 给WpenumbraRatio乘上NEAR_PLANE / zReceiver效果更好 This topic has 8 replies, 3 voices, and was last updated 3 years, 7 months ago by Tecomo. Viewing 1 reply thread Author Posts 2021年4月3日 at 下午5:04 #8014 Score: 0 鲤伴若菜Participant Karma: 1 pt 在做PCSS时,看到nv的一篇文章里面的filterRadiusUV 多乘了个NEAR_PLANE / zReceiver。试了一下得到的效果更好了。猜测可能是因为越远的着色区域在shadowmap上占的像素量就越小,所以采样半径也要随着缩小。不知道对不对。 第一幅图是乘了的效果。第二幅图是不乘的效果 Attachments:You must be logged in to view attached files. 2021年4月3日 at 下午9:42 #8019 Score: 0 cmc233Participant Karma: 6 pts 代码里NEAR_PLANE/coord.z应该是NEAR_PLANE/(coord.z*FAR_PLANE + (1.0-coord.z)*NEAR_PLANE)吧? 按作业里的场景布置,对于阴影区域来说,NEAR_PLANE / zReceiver应该蛮小的吧,再乘以这个系数,阴影会变得很硬?感觉你是不是因为NEAR_PLANE设置的是0.1左右,所以用0.1/coord.z才能得到一个比较合适的缩小?纯属胡乱猜测,如果你coord.z已经做了空间转换就当我啥都没说orz 2021年4月4日 at 上午11:12 #8021 Score: 0 鲤伴若菜Participant Karma: 1 pt coord.z和nearplane都是归一化之后。coord.z已经转换到了[0,1]。我知道乘了这个阴影会变硬一些,但依旧有软的效果。因为不知道乘上这个有什么物理意义,就瞎猜了一下,哈哈。就贴上来大家讨论一下 2021年4月4日 at 下午12:13 #8022 Score: 0 cmc233Participant Karma: 6 pts 你怎么归一化的nearplane?在0到1里,nearplane不是0吗? 2021年4月4日 at 下午2:12 #8025 Score: 0 鲤伴若菜Participant Karma: 1 pt 不是0啊,我的远近平面是0.1和500 2021年4月4日 at 下午3:00 #8026 Score: 0 cmc233Participant Karma: 6 pts 是啊,所以zReceiver = 500*coord.z+0.1*(1-coord.z)啊,你拿0.1/coord.z就没有意义啊(你下面的回复不是理解的挺清楚的吗,得在相机空间算距离比)。 ps,如果你在计算距离比的时候没有转化到相机空间,那么你计算blocker depth里fliter size要乘的(zReceiver – NEAR) / zReceiver可能也有问题,你的结果看上去没问题只是因为你的NEAR取的是0.1,而场景范围里按(0.1,500)得到的coord.z都是大于0.1的 2021年4月4日 at 下午12:25 #8023 Score: 0 cmc233Participant Karma: 6 pts 还有,突然想到,作业里shadow map推荐用的是正交投影,所以不会有“近大远小”;如果是用仿射投影的话,感觉这种想法是有道理的 2021年4月4日 at 下午2:11 #8024 Score: 0 鲤伴若菜Participant Karma: 1 pt 我搞明白了,这个是给透视投影用的。WpenumbraRatio是在相机空间算的,需要计算它投影到shadowmap上的大小。如果渲染shadowmap用的是透视投影,那根据相似三角形乘上NEAR_PLANE / zReceiver就是WpenumbraRatio在shadowmap上的大小。 2021年4月7日 at 上午11:46 #8065 Score: 0 TecomoParticipant penumbraRatio = (dReceiver – dBlocker) / dBlocker; penumbraRatio = penumbraRatio * lightSize * NEARPLANE / dReceiver; 按理说直接penumbraRatio * lightSize就是filtersize了,后面这两是在干嘛? “如果渲染shadowmap用的是透视投影,那根据相似三角形乘上NEAR_PLANE / zReceiver就是WpenumbraRatio在shadowmap上的大小” 这句还是没太明白,三角形是哪几个边构建的?方便的话可以麻烦画个图吗? Author Posts Viewing 1 reply thread You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In