Create 3.0天空盒无色差还原

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


CCFragOutput
image


修改后的天空盒shader:
image

shader写完了,但如何让其生效呢?

方案一:直接替换掉引擎的天空盒shader。
步骤如下:

  1. 找到引擎源码所在文件夹
    image
  2. 找到天空盒shader文件
  3. 替换shader

方案二:游戏运行后更新天空盒的shader

  1. 新建一个材质
    image
  2. 使用新写的shader
    image
  3. 脚本里面去设置天空盒材质

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);
        }
    }
}

  1. 脚本挂载到场景,并引用刚刚新建的材质
    image

demoSkybox.rar (226.2 KB)
印象笔记地址


更多文章
个人博客: https://blog.csdn.net/u014560101
公众号:游戏开发之旅
image

mark一下