Forum Replies Created
-
AuthorPosts
-
其实这个问题很简单,我们去看一下squareToCosineHemisphere这个蒙特卡洛积分中,他的求导单位是什么就明白了。
蒙特卡洛积分是对连续函数的离散分析,他的sampleList中的Direction代表的是dwi立体角,而不是dudphi。也就意味着我们积分内的公式应当使用ZETAAAAAAAA的图片中的第一条。所以这里ni代表的就是cos(theta in)而不是ui。
最后单个离散积分的公式应当是(F * D * G) / (4.0f * NdotV * NdotL) * NdotL / pdf
这里,
(F * D * G) / (4.0f * NdotV * NdotL) 是 microfacet brdf
NdotL 是渲染方程带的 cos(theta in)
1/pdf 是 蒙特卡洛积分公式自带(得回去复习一下了)2022 6月16号 满员了
好像换edge也不能解决这个问题,解决方法参考一下这个链接的大佬们
我现在也是,把网址换到edge上面就好了。估计是可能chrome更新之后的问题
Attachments:
You must be logged in to view attached files.看了一下网上大佬写的码,好像不用改C++17也可以用,就得这么写:
float alpha, beta, gamma;
std::tie(alpha, beta, gamma) = computerBarycentric2D(………能说一下是怎么改成17的吗?我也遇到这个问题了
不是的,是视角为45度,宽高比例为1比1,0.1是near的position,50是far的position。如果是一般屏幕的话一般来说宽高比是16:9根据公式aspect =right/top可得aspect为0.5625。
我理解的解题思路应该是先进行角度的压缩(压成一个长方形),然后再进行长方形到1比1正方形的转换。
压缩会使用到near和far两个变量,根据LEC4最后得出的Mpersp Matrix即可解决。
长方形变成正方形,会使用到“长宽高”三个变量。已知“宽”可以根据near far相减得到,“长和高”使用near点的view平面,可以使用FOV和Aspectratio两个公式算出。如此便可得到Mortho Matrix。
将两个Matrix以ortho前persp后的方式相乘起来,便可得到最终的projection matrix。
我给老师们的建议是,test case不是特别的直观,写完之后没有办法很直观的看到Matrix的到底写对没。如果有条件的话可以整个unit test试一试?
ps.主教是啥(笑)
This post has received 1 vote up.- This reply was modified 3 years, 2 months ago by Noviorlu. Reason: add
这个eye_fov和aspect_ratio应该是在第五节lec开始讲的视野和长宽比,视野。
用tan(fovY/2) = t/n 和 aspect = r/t这两个公式可以得到width和height然后转换成“Canonical Cube to Screen”的矩阵就可以了。
唯一不是特别明确的就是这个FOV是horizontal还是vertical的。一般情况eye fov应该是指horizontal的fov,btw老师在课上举例是拿Up也就是Y轴举例。
- This reply was modified 3 years, 2 months ago by Noviorlu.
-
AuthorPosts