Forum Replies Created
-
AuthorPosts
-
如果假设个方向的入射 Radiance 是 1,那么 E(u) 也是一个 Radiance,所以需要 cos\theta 的加权
因为 w 分量是线性深度值,而 z/w 是渲染管线用到的非线性深度值。
下面这幅图是从 view-space 变换到 clip-space 的过程(透视投影)
还可以参考这里:http://www.songho.ca/opengl/gl_projectionmatrix.htmlAttachments:
You must be logged in to view attached files.对照这个看看呢:https://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/
实时 chrome 浏览器,然后 F12 打开调试界面,看看 console 报了什么错。
我遇见过「库失效」和「跨域」的错误建议使用 renderdoc 来捕获帧调试,可以看到每一帧的 api 调用,渲染的模型数据,uniform attribute 等
生成 mipmap 的关键操作:
– 先为 mipmap 预留足够的内存:glGenerateMipmap(GL_TEXTURE_2D)
– 为 framebuffer 绑定不同 level 的 mipmap 作为输出:glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, your_view_depth_tex, mipmap_level)
– 在 shader 里面使用textureLod(your_view_depth_tex, uv, mipmap_level)
来采样某个级别的深度值。里面不是写了吗,nori 要依赖一些其他的库,需要用
git submodule update --init --recursive
命令下载这些库。正常情况下 texture2D 的纹理起点是左下角,但是 cubemap 因为一些历史原因(似乎是 RenderMan),纹理起点是左上角。
将「附件」作为 skybox 渲染出来,会得到正常的效果。为了获得「附件」上的纹理,需要调整摄像机的 front 和 up 方向。
另外,cubemap 是包裹在立方体外部的,摄像机位于立方体的内部。Attachments:
You must be logged in to view attached files.m 是微表面法线,微表面上面进行的是镜面反射,因此 m 就等同于半程向量 h。
此时 (i·m) = (o·m)This post has received 1 vote up. -
AuthorPosts