美术说天空盒跟原图有色差,看了一下源码发现是因为引擎做了色调映射。
天空盒shader
CCFragOutput
修改后的天空盒shader:

shader写完了,但如何让其生效呢?
方案一:直接替换掉引擎的天空盒shader。
步骤如下:
- 找到引擎源码所在文件夹
- 找到天空盒shader文件
- 替换shader
方案二:游戏运行后更新天空盒的shader
- 新建一个材质
- 使用新写的shader
- 脚本里面去设置天空盒材质
import { _decorator, Component, ForwardPipeline, director, Material } from 'cc';
const { ccclass, property } = _decorator;
/**
* 天空盒原样显示,不进行色调映射
*/
@ccclass('MySkyBox')
export class MySkyBox extends Component {
@property(Material) material = null;
start() {
const forwardPipeline = director.root.pipeline as ForwardPipeline;
const skybox = forwardPipeline.skybox;
if (skybox['_model']) {
skybox['_model'].setSubModelMaterial(0, this.material);
}
}
}
- 脚本挂载到场景,并引用刚刚新建的材质
demoSkybox.rar (226.2 KB)
印象笔记地址
更多文章
个人博客: https://blog.csdn.net/u014560101
公众号:游戏开发之旅


