Shader笔记

切线空间是由模型中该顶点处的法线、切线和副切线组成的,就算没有法线纹理,模型的每个顶点也是有自己的切线空间的。因为我们要在fragment shader里构建变换矩阵,所以到了像素级别的时候你可以认为此时每个像素的切线空间的三个坐标轴是由顶点处的三个向量插值过来的。

你所说的“每个像素点的法线应该都是和它自己的切线空间的z轴重合的”,准确说来是每个像素点的插值法线应该都是和它自己的z轴重合的,因为我们就是使用了这个值肯定是一致的……法线贴图里存储的是在这个切线空间里面的某个方向,是我们希望高模中该处的法线方向。

你会有这样的问题应该是把模型法线和我们期望的法线弄混了。法线贴图一般是由高精度模型得来的,而我们真正使用的模型是由高模简化而来的,它包含了的顶点数和面片数都大大小于高模,这就意味着法线精度一定会缺失。所以我们就需要使用一张像素精度级别的纹理来存储高模的法线信息,这就是法线纹理。

顶点坐标和正切线为什么是float4,这有点意思,因为这里它表示是齐次坐标,比如我们这样表示一个float4(x,y,z,w),当w = 1的时候它表示点(x,y,z),当w= 0的时候它表示一个向量(x,y,z)。区别就在这里,当W为1时表示点,当W为0时表示向量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要介绍cocos2d-x如何使用OpenGL实现着色器程序,介绍可以通过GLSL语言实现的两类着色器...
    work_xiao阅读 4,788评论 0 5
  • <转>我也忘了转自哪里,抱歉,感谢原作者 什么是Shader Shader(着色器)是一段能够针对3D对象进行操作...
    星易乾川阅读 5,656评论 1 16
  • 一.标准光照模型OpenGL与Direct3D提供了几乎相同的固定功能光照模型。什么是固定功能光照模型?在过去只有...
    karma085阅读 3,701评论 0 2
  • 模糊效果在游戏中经常会用到,有的为了突出前景会把背景给模糊化,有的是因为一些技能需要模糊效果。模糊是sha...
    work_xiao阅读 3,968评论 0 1
  • 01 昨天晚上,我重看了星爷的经典影片《少林足球》,经典的影片重看还是会有许多心得。 星爷扮演的小师弟去找三师兄想...
    凌阿深阅读 1,831评论 12 20