AppleMetalShaderLanguage(MSL)是否始终使用线性颜色?
创始人
2024-09-10 19:30:08
0次

在MSL中,颜色可以使用标准8位无符号整数(0~255)表示,也可以使用浮点数(范围为0.0~1.0)表示。无论使用整数还是浮点数,MSL始终使用线性颜色。这意味着颜色值在计算之前会被转换成线性空间,然后在计算后再转换回RGB颜色空间。 以下是一个使用MSL的代码示例,其中颜色转换(转换为线性空间,完成计算后再转换回RGB空间)在函数内部完成:

fragment float4 myFragmentShader(VertexOut in [[stage_in]]) {
    // 定义颜色,并将其转换为线性空间
    float4 color = convertLinearRGBA(in.color);
    
    // 颜色计算代码,计算结果仍然在线性空间中
    float4 result = color * someMatrix;
    
    // 将计算结果转换回RGB颜色空间
    return convertRGB(result);
}

// 颜色转换函数:将颜色转换为线性空间
inline float4 convertLinearRGBA(uint4 rgba) {
    float4 color;
    color.r = pow(rgba.r / 255.0, 2.2);
    color.g = pow(rgba.g / 255.0, 2.2);
    color.b = pow(rgba.b / 255.0, 2.2);
    color.a = rgba.a / 255.0;
    return color;
}

// 颜色转换函数:将颜色转换为RGB颜色空间
inline float4 convertRGB(float4 linearColor) {
    float4 color;
    color.r = pow(linearColor.r, 1.0 / 2.2);
    color.g = pow(linearColor.g, 1.0 / 2.2);
    color.b = pow(linearColor.b, 1.0 / 2.2);
    color.a = linearColor.a;
    return color;
}

相关内容

热门资讯

黑科技辅助器!山西麻将(辅助器... 黑科技辅助器!山西麻将(辅助器),三哥玩一直是真的有透视挂方法(有辅助挂讲解)1、玩家可以在山西麻将...
黑科技开挂!娱家麻将(开挂),... 黑科技开挂!娱家麻将(开挂),牛旋风好像存在有透视挂app(有辅助挂辅教程)亲,关键说明,娱家麻将透...
黑科技开挂!新胜(开挂),边锋... 黑科技开挂!新胜(开挂),边锋斗地主其实是有透视挂工具(竟然有辅助挂)边锋斗地主辅助器是一种具有地方...
黑科技开挂!猎鱼达人(开挂),... 黑科技开挂!猎鱼达人(开挂),乐途棋牌其实是有透视挂软件(有辅助挂辅助)1、点击下载安装,猎鱼达人脚...
黑科技外挂!新祥心(外挂),福... 黑科技外挂!新祥心(外挂),福州麻将6.2原来真的是有透视挂方法(果真有辅助挂)一、福州麻将6.2游...
黑科技外挂!快乐碰胡(外挂),... 黑科技外挂!快乐碰胡(外挂),卡贝大厅确实存在有透视挂攻略(有辅助挂方式)1、不需要AI权限,帮助你...
黑科技外挂!天天卡五星(外挂)... 黑科技外挂!天天卡五星(外挂),逗娱碰胡都是真的是有透视挂教程(有辅助挂猫腻)1、不需要AI权限,帮...
黑科技辅助器!东游麻将(辅助器... 黑科技辅助器!东游麻将(辅助器),天天爱掼蛋一直真的有透视挂教程(有辅助挂猫腻)1、实时天天爱掼蛋透...
黑科技透视挂!008棋牌(透视... 黑科技透视挂!008棋牌(透视挂),松鼠互动总是真的有透视挂软件(有辅助挂存在)1、上手简单,内置详...
黑科技辅助器!姜堰23张(辅助... 黑科技辅助器!姜堰23张(辅助器),姜堰23张原来有透视挂软件(有辅助挂细节)1、姜堰23张模拟器是...