zyk

Forum Replies Created

Viewing 26 posts - 1 through 26 (of 26 total)
  • Author
    Posts
  • in reply to: 【作业五】读取文件错误 #9297 Score: 0
    zyk
    Participant
    6 pts

    路径不对呗,把你的程序复制到examples同级的目录下执行就好

    in reply to: PRT 效果 #8375 Score: 1
    zyk
    Participant
    6 pts

    我遇到了跟你类似的问题,排查之后发现是一开始假设环境光是一个常数导致的这个问题。
    假设环境光是一个常数,算出来跟pdf一样的球谐系数之后,要把环境光改成6个image采样的那个再算出的球谐系数才是JS那边要的。
    不知你是否也是这个问题?

    This post has received 1 vote up.
    in reply to: [作业1]关于CPU和GPU同步问题 #8037 Score: 0
    zyk
    Participant
    6 pts

    我也认为是在render函数中确定的,渲染的目标framebuffer是在material中确定的。shadow pass用的材质是渲染到light.fbo,camera pass则是直接渲染到屏幕

    in reply to: 关于shadow map精度导致的问题 #7963 Score: 0
    zyk
    Participant
    6 pts

    原文笔误:也就是说地面自己遮挡自己这个说法是站在相机角度说的,跟光源角度看东西是否自遮挡毫无关系!

    我的理解:光源角度看东西不存在自遮挡这种情况

    in reply to: 关于shadow map精度导致的问题 #7962 Score: 0
    zyk
    Participant
    6 pts

    按我理解:
    1. 红片仅仅是用来示意从点光源角度看地面时的离散化深度
    2. 闫老师说的自遮挡是指光源角度生成的离散深度图在相机视角下计算阴影时离散的某些像素误判为在阴影中,也就是说地面自己遮挡自己这个说法是站在相机角度说的,跟相机角度看东西是否自遮挡毫无关系!光源角度给出的深度图是离散的这一特性给了相机角度进行shading时发生误判
    3. 提高ShadowMap的分辨力,应该能减少自遮挡的现象

    到这里其实我有另一个问题:

    既然是离散化导致的问题,那光源角度进行渲染时,片段着色器中对ShadowMap进行采样的时候使用双线形插值之类的算法来模拟连续深度图,是否也能改善自遮挡的现象?

    in reply to: 闫老师的下一门课程什么时间开? #6615 Score: 0
    zyk
    Participant
    6 pts

    CS291是什么课程?

    in reply to: 作业八:显式欧拉,掉下来就不动了。。。 #6302 Score: 0
    zyk
    Participant
    6 pts

    你的速度直接用重力加速度去算,自然只有往下掉啦!加速度应该用force/mass来算出
    然后你m1和m2力的计算也不太对

    • This reply was modified 3 years, 12 months ago by zyk.
    in reply to: 作业八:显式欧拉,掉下来就不动了。。。 #6298 Score: 0
    zyk
    Participant
    6 pts

    你这个阻力系数0.1太大了??给个小的试试?比如0.005

    in reply to: 作业七的性能瓶颈是随机数生成 #6292 Score: 1
    zyk
    Participant
    6 pts

    我是使用libuv的线程池+work队列来实现多线程的,比如渲染一张128*128图,我就创建128*128个任务加到任务队列中,然后开启libuv的runloop通过线程池去执行。(我用的是4线程的CPU,线程池中线程数设置为4)

    昨晚将随机数生成做成局部static的thread_local变量,这样会针对线程池中的每个线程创建一个随机数生成器,而不是每次调用随机数去构建生成器。

    结论:这样做确实大幅提高了渲染效率,4线程的普通PC,渲染一张1024*1024、spp为2048的图,只需要一个多小时!

    请问你是怎么测出性能热点在构建随机数生成器的?C++有什么厉害的性能分析工具吗?
    这块我不是很熟悉,没做过类似的分析,谢谢!

    This post has received 1 vote up.
    in reply to: 关于渲染方程递归定义的疑问 #6059 Score: 0
    zyk
    Participant
    6 pts

    对的,你这个式子大家都能理解,我的疑惑在于这个式子推导出来的过程理解不了,没有解释是在哪一步避开了那个循环递归。。。可能只是我对整个过程没有理解透彻?
    按照我的理解,russian roulette只是来避免这个式子L=E+KE+K^2E+K^3E+… 的无限多项,并没有解答递归的问题。
    — 感谢助教的热心答复

    in reply to: 关于渲染方程递归定义的疑问 #6048 Score: 0
    zyk
    Participant
    6 pts

    L[i] = E[i] + K[i, :] L[:] 这个说法可以理解,然而还是有疑问
    写成L = E + KL这个形式,再解出L来,那意思不就变成L[i]==L[:] ??

    物体A发出光,照到物体B,物体B反射出光,这些反射光又会照到A,这里就循环递归了
    其实我们不理解的就是,老师上课讲的这种运算,到底是怎么解决这个递归问题的?

    in reply to: 作业二 求教 #4725 Score: 1
    zyk
    Participant
    6 pts

    想象一下,一个小立方体撑大成一个大长方体:
    x轴:[-1, 1] 转成 [0, width]
    y轴:[-1, 1] 转成 [0, height]
    z轴:[-1, 1] 转成 [zNear, zFar]

    This post has received 1 vote up.
    in reply to: 关于MSAA的问题 #4566 Score: 0
    zyk
    Participant
    6 pts

    我觉得采样点不能随机,采样点的深度也要记录的,用于多个三角形渲染时做深度比较,如果你随机了,怎么在多个三角形之间比较采样点的深度值?

    in reply to: 作业三的indice #4564 Score: 0
    zyk
    Participant
    6 pts

    indice是一个整数列表,表示的是哪些点构成三角形,比如说,整数列表为132435,则表示为第1个,第3个,第2个顶点构成一个三角形,435构成第二个三角形,这个数据结构跟obj文件内容是对应的,indice对应obj文件中f开头的行

    in reply to: spot_control_mesh.obj 模型显示 #4563 Score: 0
    zyk
    Participant
    6 pts

    你可以对比一下spot_control_mesh.obj和spot_triangulated.obj这两个obj文件,都是文本文件,放置的数据中,注意文件中f字母开头的行,你会发现如下区别:

    1. spot_control_mesh.obj文件中f开头的行,f后带有4列,表示一个四边形
    2. spot_triangulated.obj中,f后则只带了3列,表示一个三角形

    我们的框架代码只能渲染三角形哦,所以你没修改obj或者没修改框架代码的话,直接渲染就是出现这种缺了很多三角形的情况。

    in reply to: 作业三的牛倒过来了 #4553 Score: 0
    zyk
    Participant
    6 pts

    1. zNear = -zNear, zFar = -zFar这两句取反本来就是需要的,因为定义中,zNear和zFar传入的是距离,所以是正数,但是我们推导透视矩阵的时候,需要的是坐标,假定看向Z负半轴的话,坐标都是负的,需要取负
    2. vert.z() = -vert.z()*f1 + f2,这一句,是为了将深度值取反,之所以要变这个,是因为你的透视矩阵传递的深度跟框架对深度的设定不匹配
    3. 框架假定,在归一化NDC坐标中,深度的区间为[-1, 1],-1为靠近视点,1为远离(越大越远)
    4. 透视矩阵推导中,我们把所有东西都转换到看向Z负半轴,因此Z值是负的,并且是越小越远,这与框架的假定相反
    5. 想解决这种相反,有两个方式,第一就是改这句vert.z() = -vert.z()*f1 + f2,第二是将你的透视矩阵整个乘以-1(透视矩阵齐次分量传递的是深度,整个乘以-1其实只会影响深度)
    6. 正确的做法我觉得是透视矩阵乘以-1,符合框架的设定
    7. 按照老师在课堂推导的透视矩阵,还需要乘以如下矩阵
    1, 0, 0, 0,
    0, 1, 0, 0,
    0, 0,-1, 0,
    0, 0, 0, 1
    用于将z取反,这个取反的原因也是因为z值要改成越大越远
    8. 之所以透视矩阵需要做两次取负,是因为我们的透视矩阵其实传递了两个深度,一个是z分量,一个是w分量,要取负两个都得反

    This post has received 1 vote up and 1 vote down.
    in reply to: 关于作业三深度阴影得计算问题? #4551 Score: 1
    zyk
    Participant
    6 pts

    1. 作业3中计算重心坐标依然使用屏幕空间的三角形坐标进行计算,这个其实不对,不过对结果影响很小就无所谓了
    2. 作业3有个点需要指出,t.v中每一个坐标有xyzw四个分量,其中,xyz是屏幕空间归一化的NDC坐标+ViewPort视口变换得到,w分量则保留透视矩阵传递的深度值(w分量没有做透视投影)
    3. 作业注释的意思,就是让你拿t.v中的w来做插值,而不是t.toVector
    4. 透视矩阵除了对顶点做透视变换,还通过齐次分量传递了视角空间的像素深度,通过透视矩阵的修改可以改变这个齐次分量的正负

    This post has received 1 vote up.
    in reply to: 作业三 phong 模型不能显示漫反射和高光问题 #4505 Score: 0
    zyk
    Participant
    6 pts

    norm函数是取模,normalized函数才是取单位向量

    in reply to: 作业3任务一二后有很多三角 #4472 Score: 0
    zyk
    Participant
    6 pts

    改了就对了?

    in reply to: 作业3任务一二后有很多三角 #4468 Score: 0
    zyk
    Participant
    6 pts

    找到你代码中有个地方写错了。。。

    Attachments:
    You must be logged in to view attached files.
    zyk
    Participant
    6 pts

    你是在那节课视频时间点看到的?你说一下具体时刻我去找找

    zyk
    Participant
    6 pts

    似乎你没理解楼上问题的意思,他的意思应该是眼睛成像之后的一个像素包含桌面面积!
    按照我的理解,你提出的问题描述似乎不对:
    1. 我们将MipMap看成很多张贴图,每一张对应一个level,那么,level越高的贴图分辨率越低(像素大小不变的话就是贴图越小),level越高的贴图单位面积内包含更大的视角范围
    2. 离视角越近的地方应该用更低的level,这样看到的贴图精度才足够
    3. 因为越远的地方单位像素需要表达的东西越多,一大堆东西在成像之后只有一个点,那这个点的像素值就应该是所有这一大堆东西颜色的平均,MipMap的更高level中每个像素点记录的是更多东西的平均

    This post has received 2 votes up.
    in reply to: 关于透视矩阵的参数 #3870 Score: 0
    zyk
    Participant
    6 pts

    我觉得你说的挺有道理,不过,zFar<zNear<0这一点似乎有点问题,因为在框架代码中参数传递的zFar是50,zNear是0.1,那么问题出在哪里?框架代码用的左手系并且默认视角方向是z正轴?
    左手系+z正轴也说不通,三角形顶点放在世界坐标的z为-2和-5处,视角位置在z为5的地方,默认看向正轴就看不到东西了或者看到z为-5的覆盖z为-2的。。。

    in reply to: 关于透视矩阵的参数 #3859 Score: 0
    zyk
    Participant
    6 pts

    我的理解:z值虽然正交投影会去掉,但是真实的渲染流程中还有一步裁剪,z值超过范围的都裁剪掉了,我们的作业框架似乎没有这一步,导致z不管多少都会看到

    in reply to: 作业二 形状好像不大对 #3747 Score: 0
    zyk
    Participant
    6 pts

    矩阵写成4行4列对齐???你全写成一行容易出错

    in reply to: 作业二 形状好像不大对 #3740 Score: 0
    zyk
    Participant
    6 pts

    我觉得可能是你的透视矩阵有问题?贴一下透视矩阵的代码?

Viewing 26 posts - 1 through 26 (of 26 total)