zhouleyi2003吧 关注:10贴子:2,967
  • 12回复贴,共1

今天是星期六

只看楼主收藏回复

既然是 weekend 就应该看《Ray Tracing in One Weekend》!


IP属地:浙江1楼2024-01-13 20:26回复
    作者写得很好,只是我太笨了,花了两个小时才看懂里面 viewport 的概念。
    起先不知道作者为什么要加个 viewport,直接写像素不就可以了吗……花了两个小时突然想通了!viewport 实际上是一种抽象层,消除了屏幕分辨率的不同对于渲染结果的影响。又联想到 OpenGL 里面,坐标被转换到 NDC 空间后需要经过 viewport transform 转换到屏幕空间,这就是 viewport 的功能!


    IP属地:浙江2楼2024-01-14 12:10
    回复

      纯蓝色到纯白色的 lerp


      IP属地:浙江3楼2024-01-14 13:01
      回复

        发现有个地方漏写了 2 ,但还编译成功了……这就是 overload 的坏处吗?


        IP属地:浙江5楼2024-01-14 13:47
        回复

          hmm..identical !


          IP属地:浙江6楼2024-01-14 14:06
          回复
            虽然有门课的大作业还没做完,不过现在约等于放寒假了,长达 40 天!
            开学那一天是我生日诶。


            IP属地:浙江7楼2024-01-14 14:13
            回复
              8xMSAA?
              我已经用上 128x 了虽然用的不是 MSAA。
              顾名思义,每个像素有 128 个采样点。极致的 anti-aliasing 效果!


              IP属地:浙江8楼2024-01-15 19:41
              回复

                我不同意这句话,因为球坐标系并没有那么 "complicated":

                如果用作者所说的 "rejection method" ,成功的期望次数为 8 / (4/3*PI) 约等于 2 次,而用球坐标系可以保证 1 次得到想要的结果。
                附上效果图:
                1 sample per pixel

                16 samples per pixel

                64 samples per pixel


                IP属地:浙江9楼2024-01-15 21:00
                回复
                  调整了一下位置。
                  目前实现的光追都是在 CPU 上完成的,本质上是许多独立的递归操作,所以可以开多个线程来加速计算。


                  IP属地:浙江10楼2024-01-15 21:14
                  回复
                    刚刚鬼使神差点了两个汉堡加一份薯条——算了,放假吃点好的也没什么关系。


                    IP属地:浙江11楼2024-01-15 21:54
                    回复
                      突然想到 “意义” 这个词。我这个人,无论做什么事情,总喜欢给它赋予某种 “意义”,因为无意义意味着徒劳,既然是徒劳,那么一开始就没有做的必要。
                      更重要的是,“意义” 是由自己赋予和定义的,而不是某人的意志促使你去做某件事情。只有我自己才能够清楚地知道,自己想要做什么,成功之后能得到什么,相应地,失败之后会发生什么,做着这样的事情,总是很开心。


                      IP属地:浙江12楼2024-01-16 12:47
                      回复
                        最近把 mc 吧从 12 年到现在所有的有关自制 mc 的贴子全看了,因为自己不久之后也要做,看看能不能避免踩到前人的坑,所谓 “以史为鉴” 是也。一个令我比较在意的是方块选择算法,目前看下来,他们用的好像都是 “试探法”,即向准星所指的方位发射一条射线,设定一个初始的步进值,然后弄一个 for 循环一步步加 step,记录相交的第一个方块然后返回。
                        这种方法……我虽然很想否定它,因为它听起来不是那么的 “优雅”,但不得不承认,它确实简单而有效。因为拾取是有距离限制的,而这个距离相对来说很小,所以不会造成太大的 cost。
                        如果让我做的话,以我现在的知识水平来说,本质上这是一个射线和平面求交的问题,所以我会优先考虑使用数学方法解决。射线方程 P = S + tV 很容易获得,问题在于平面方程,因为我们一开始不知道会和哪个面相交,所以只能把射线和场景内所有的物体全做一次相交性测试。这个过程可以利用一些空间数据结构来加速,但建立这些数据结构所需要花费的时间和空间还有待评估。
                        另外一种是 pick framebuffer,这个方法需要多个 pass,第一次将物体的信息(ID)渲染至纹理,然后就能在 O(1)的时间下读取纹理数据,获得指向的物体了!第二次再渲染颜色、光照等等。这个方法不用判断遮挡的问题,因为遮挡测试已经由 Z-Buffer 完成了。此外,此方法还能顺便实现 deferred shading,一举两得。缺点是 draw call 多了不少,所以需要在 CPU 端的剪裁与合批这方面下点功夫,尽可能地提高总线利用率。


                        IP属地:浙江14楼2024-01-17 11:41
                        回复

                          reflection


                          IP属地:浙江15楼2024-01-17 20:26
                          回复