计算机图形学
文章平均质量分 50
4396!
这个作者很懒,什么都没留下…
展开
-
unity shader中 CG和GLSL之间矩阵存储方式的差异
在unity shader中计算切线空间光照的时候发现TBN矩阵在计算后并没有转置,这和在GLSL、线代中的计算方法相差一个转置的步骤,因为在GLSL中直接求得的TBN矩阵是切线空间到世界空间的变换,如果要在切线空间计算光照,则需要使用转置TBN矩阵来把向量从世界空间变换到切线空间。后来查阅了下资料如下:在CG中使用了行向量来存储TBN矩阵,可以参考这里:https://developer.download.nvidia.com/CgTutorial/cg_tutorial_chapter08.html原创 2022-03-10 20:16:52 · 3811 阅读 · 0 评论 -
Gamma矫正
为什么要用gamma矫正?因为人眼对暗部观察敏感,使用的为美术灰阶,也就是物理灰阶21.8%=美术灰阶中灰50%,这一对应关系可用一个映射函数来表示即y=x^(1/2.2) ,下方函数图像。人眼可以自动gamma映射。由于在计算机渲染运算时使用的是精度较高的浮点数,浮点数足够存储21.8%的暗部信息,但是存储图片时使用的是8bit的存储空间,对于暗部只有256*21.8%=55.8个灰阶,不足够存储暗部的信息,会发生明显断层,所以需要将浮点数映射到gamma空间(此时图片会发亮),再把数据转换至8b原创 2022-02-25 12:12:11 · 245 阅读 · 0 评论 -
世界空间到观察空间的变换矩阵为什么是相机变换矩阵的逆矩阵?
有些地方的理解和描述可能不太正确。虎书133页有更加详细的解释。唉,感觉线代还是没学明白,还有不少也都忘记了。这块本质上还是线性变换变来变去的。原创 2021-09-07 17:45:40 · 357 阅读 · 0 评论