Home Forums Games202-高质量实时渲染 作业1的正交矩阵参数的疑惑

Tagged: 

Viewing 3 reply threads
  • Author
    Posts
    • #7998 Score: 1
      chino
      Participant
      1 pt

      作业一做到“CalcLightMVP”函数的时候,里面求projectionMatrix正交矩阵需要填写盒子的大小参数,但我找了下没有找到具体的参数从哪里来,也没有找到它的定义。

      求教下各位大佬,这个参数到底是怎么填写?

      This post has received 1 vote up.
      Attachments:
      You must be logged in to view attached files.
    • #8000 Score: 0
      cmc233
      Participant
      5 pts

      估计填写,保证在light坐标系下,由(left, right, bottom, top, near, far)构成的盒子能够包含整个场景,从而渲染出完整的shadow map就行
      可以在phongVertex.glsl里令 gl_Position = vPositionFromLight;就可以可视化出shadow map渲染的范围

    • #8003 Score: 0
      chino
      Participant
      1 pt

      感谢

    • #8194 Score: 0
      IcedBlackTea
      Participant

      你好,想问一下最后你的正交矩阵的参数怎么填的, 我用的以下参数 (learnOpenGL中用的) 但是shadowmap没有成功生成
      mat4.ortho(projectionMatrix, -10.0, 10.0, -10.0, 10.0, 1.0, 10);

      • #8195 Score: 0
        Avin
        Participant

        关于这个问题,可以看一下mat4.js里面ortho的源码,mat4.ortho最终投影到的投影空间,是一个长宽高均为[-1, 1]的立方体,而根据Shader中把浮点数打包成RGBA的做法看来,是要求深度被投影到[0,1]这个区间的。因此,可能不能直接使用mat4.ortho得到投影矩阵。(即使是投影到[-1,1]的立方体,mat4.ortho返回的矩阵中[2][2]的元素缺少了一个负号?)

        • #8196 Score: 0
          Avin
          Participant

          噢,我的理解有些问题,回看一下画阴影的FS,用的就是gl_FragCoord.z,已经是个归一化之后的值了。因此,投影到一个[-1,1]立方体的问题不大,只不过可能是mat4.ortho的实现确有问题?

          • #8197 Score: 0
            Avin
            Participant

            啊哈哈,仔细看了一下mat4.ortho的实现,应该也是没问题的,可能只是给的投影参数的投影体覆盖不到场景物体而已,可以试下给大一点深度,同时把投影体在场景里面的范围画出来看下。

            • #8269 Score: 0
              IcedBlackTea
              Participant

              没错没错, 这个参数值太小了, 试了几次以后总算把shadowmap覆盖完整个场景了. 做LearnOpenGL的教程的时候能用renderdoc抓帧看生成的shadowmap, webgl用Spector.js看不到深度图只能全靠画了

          • #9628 Score: 0
            waqia
            Participant
            1 pt

            大佬 你的意思是webgl自动把gl_FragCoord.z从[-1,1] 归一化到了[0,1]吗?

Viewing 3 reply threads
  • You must be logged in to reply to this topic.