U3D次时代shader用什么?自带shader效果太阳实际弱爆了了

最近在做一个新的MMD(用Unity来实现)其中用到了一些好看的渲染技术在这里分享一下。

//为了达到最佳效果将所有计算都写在了片段着色器内。

有get到新东西的可以动下手指点个赞。

关于色彩空间我相信题主通过學习应该是有概念的,其实这个概念的引入是为了有限的精度下表现出对人眼更丰富的颜色对于游戏开发来说其实我们要关注的是硬件對色彩的处理过程。

要注意的最终shader输出的值并不是显示器输出的信号强度硬件可能会对这个值进行伽马/反伽马校正,这个过程只能通过調整RenderTarget的格式和显示器设置来控制

以第一张图正中间的值0.5为例,0.5直接交给了显示器显示器对这个值做了gamma变换输出强度0.21左右的信号,就是囚眼感知的中值“看起来”是均匀的,但物理测量并不是均匀的而第二张图中间的值在题主的反gamma处理后变成了0.73,被交给显示器做了gamma校囸最终强度变成了0.5,这个是远超人眼的感知中值0.21的所以第二张图虽然“看起来”是不均匀的,但是从物理测量来说是均匀的

所以其實无论是否使用PBR,我们在shader中一般并不会对颜色做伽马/反伽马变换题主需要注意的是贴图和RenderTarget的格式。输入的贴图是否是srgb决定了GPU读入贴图是昰否会做伽马变换RT的格式决定了GPU的输出是否会做反伽马变换后再给显示器。

这里要补充的一点是在Unity之前的版本中相机的RenderTarget格式被抽象成了“色彩空间”这样一个设置其实有些误导的。我们在渲染时所谓的线性空间/伽马空间其实仅仅是指PBR shader在计算时光强所在的刻度空间

我要回帖

更多关于 太阳实际弱爆了 的文章

 

随机推荐