3D知识


  • 延迟渲染

  • 界面渲染

  • 文本渲染

  • 多光源

  • 后期效果处理

  • 屏幕空间环境光遮蔽

  • 阴影投射

  • 颜色纠正

  • 骨骼动画

  • 反向运动学

  • 碰撞检测


Shader

  • 深度

    深度其实就是该像素点在3d世界中距离摄象机的距离,深度值Zbuffer(Z值)越大,则离摄像机越远

  • 深度缓存

    深度缓存中存储着每个像素点(绘制在屏幕上的)的深度值!如果启用了深度缓冲区,在绘制每个像素之前,OpenGL会把它的深度值和已经存储在这个像素的深度值进行比较。新像素深度值<原先像素深度值,则新像素值会取代原先的;反之,新像素值被遮挡,其颜色值和深度将被丢弃,最终屏幕显示的就是深度缓存中深度对应的像素点的颜色!(深度主要起的是比较的作用)

  • 深度检测

    在不使用深度测试的时候,如果我们先绘制一个距离较近的物体,再绘制距离较远的物体,则距离远的物体因为后绘制,会把距离近的物体覆盖掉,这样的效果并不是我们所希望的。而有了深度缓冲以后,绘制物体的顺序就不那么重要了,都能按照远近(Z值)正常显示,这很关键。(越后绘制的东西,距离相机就越近)

  • 渲染队列

    1. unity先将渲染队列中较前的ß进行渲染,然后再执行ZWrite,ZTest

    2. ZWrite可以取的值为:On\/Off,默认值为On,代表是否要将像素的深度写入深度缓存中

    3. ZTest可以取的值为:Greater\/GEqual\/Less\/LEqual\/Equal\/NotEqual\/Always\/Never\/Off,默认值为LEqual,代表如何将像素的颜色写入深度缓存中,例如当取默认值的情况下,如果将要绘制的新像素的z值小于等于深度缓存中的值,则将用新像素的颜色值更新深度缓存中对应像素的颜色值。需要注意的是,当ZTest取值为Off时,表示的是关闭深度测试,等价于取值为Always,而不是Never!Always指的是直接将当前像素颜色(不是深度)写进颜色缓冲区中;而Never指的是不要将当前像素颜色写进颜色缓冲区中,相当于消失。


results matching ""

    No results matching ""