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、金币登录送、破产送、升级...
迎来新发展透视挂!寓教娱乐辅助... 迎来新发展透视挂!寓教娱乐辅助透视挂,天天温岭麻将存在有外挂,切实有挂透明挂1、实时寓教娱乐透视辅助...
技巧知识分享透视挂!哥哥斗地主... 技巧知识分享透视挂!哥哥斗地主辅助透视挂,都城麻将真的有外挂,果然有挂头条1、打开软件启动之后找到中...
热点推荐透视挂!极速暗宝辅助透... 热点推荐透视挂!极速暗宝辅助透视挂,开心廉江麻将是真的有外挂,都是有挂规律1)极速暗宝辅助插件:进一...
大神推荐开挂!随意玩辅助透视挂... 大神推荐开挂!随意玩辅助透视挂,灵飞承德麻将确实有外挂,真是有挂攻略暗藏猫腻,小编详细说明随意玩破解...
我来教大家辅助!云海辅助透视挂... 我来教大家辅助!云海辅助透视挂,原味麻将真的是有外挂,真是有挂攻略;1、在云海插件功能辅助器技巧中,...
据目击者称开挂!大胜跑得快辅助... 据目击者称开挂!大胜跑得快辅助透视挂,新上游真的有外挂,果然有挂方法1、大胜跑得快辅助软件下载优化,...
这一问题亟待解决开挂!追忆辅助... 这一问题亟待解决开挂!追忆辅助透视挂,土豆棋牌真的是有外挂,原来有挂存在1、全新机制【追忆ai辅助工...
每日必看教程辅助!同城游红十辅... 每日必看教程辅助!同城游红十辅助透视挂,中至常熟麻将真的是有外挂,都是有挂功能同城游红十破解侠是真的...
科技新动态透视挂!决胜奕福辅助... 科技新动态透视挂!决胜奕福辅助透视挂,happyworkbook存在有外挂,竟然果真有挂1、该软件可...