如何在SCNTechnique着色器中获取色调映射前的HDR颜色?
获取SceneKit预处理HDR颜色用于自定义后期处理
可以通过以下方式获取未经色调映射的HDR原始渲染结果:
替换输入通道:放弃默认的
COLOR输入通道,改用SCENEKIT_HDR_COLOR作为着色器的输入源。只要相机的wantsHDR设为true,这个通道就会提供相机渲染后、还未经过SceneKit内置色调映射的HDR颜色数据。配置示例:在你的SCNTechnique配置中,将pass的输入指定为
SCENEKIT_HDR_COLOR,示例如下:{ "passes": [ { "name": "customPostProcess", "inputs": { "source": "SCENEKIT_HDR_COLOR" }, "outputs": { "color": "COLOR" }, "program": "CustomPostProcessShader" } ], "sequence": ["customPostProcess"], "targets": ["scene"] }关键注意点:
- 自定义着色器要适配HDR浮点颜色值,比如使用
half或float类型处理纹理采样,避免用针对SDR的sRGB校正类型。 - 处理完HDR数据后,需要自行实现色调映射逻辑输出为SDR,或者保留HDR格式供后续环节使用。
- 自定义着色器要适配HDR浮点颜色值,比如使用
内容的提问来源于stack exchange,提问作者Abel Toy
相关产品推荐
相关产品推荐

