| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> UEToUnity CLUT -> 正文阅读 |
|
[游戏开发]UEToUnity CLUT |
首先对于整个颜色计算的流程,请先看学姐的文章,游戏相关的贴图相关我之前也有写篇文章 [总结] 漫谈HDR和色彩管理(一)光、颜色和色度图 - 知乎 这里只关注普遍的SDR的输出设备的流程,我们知道UE的流程是: 1、sRGB linear space下的光照计算 2、生成CLUT: white balance(sRGB linear->ACES AP1) HDR color Grading(AP1下计算) LMT->RRT+ODT(UE的Tonemapping指RRT和ODT合并之后统一进行的曲线映射部分) ACES LMT中的blue light ArtifactFix来修正高亮度的蓝色导致的过饱和问题 AP1_2_sRGB转回sRGB linear SDR OETF 所以我们要做的就是把UE CLUT这部分的计算挪到Unity中 UE相关的计算主要是这几个文件 ?我们可以在UE中PC和安卓分别截帧debug pixel看他们的计算流程,可以看到主要的计算流程没啥区别,只是PC端compute生成的是3DLUT,安卓是2DLUT ?在Unity中这三直接拿过来用,还有几个别的文件里用到的函数记得也写进去。然后在Unity中也用computeShader来调CombineLUTsCommon就行,计算都是一样的。如果就用一套默认参数的LUT,那UE生成的LUT也可以直接拿来用.. ?然后计算相关的参数记得要声明全,很多后处理组件上设的参。少传了或者值没对效果都不对的,这时候建议每个步骤一边改源码一遍俩引擎截帧对应看,容易定位哪里出问题了。 结果 ? 然后关于LookDev,像UE Unity SP这些效果要完全一样那也是不阔能的,像Unity IBL漫反射部分的三阶球谐,SP的二阶球谐。Unity、UE的IBL镜面反射部分的MipMap+预积分LUT和SP的重要性采样的区别。以及引擎本身IBL的结果效果就有区别,如Unity的realTimeGI和UE的动态SkyLight的结果就不一致,烘焙变数就更大了。 顺便一提,测了一下Unity中强度1的白平行光,对应UE中PI lux的白平行光,用白色,金属度0,粗糙度1的收光平面测试,无GI影响的情况下结果对应。 还有LookDev的搭建通过俩张色卡截图生成颜色LUT的方式是不正确的,一是不准确,二是UE4的后处理都是在HDR的线性空间下计算的,LDR的LUT颜色校正方式本来就是比较老的方式对应PS这种LDR的校正的,更合理的方式应该是都放在ColorGrading中处理。 以上 其实也可以看出来,用什么引擎其实问题真的不大。标准环境的搭建固然重要,但一味地扣像素级的对其标准在我看来是真没必要。像我们学习美术的最终目的是在于表达我们的内心的想法,做游戏也应如此,这也是我前进的动力。长路漫漫 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/17 6:12:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |