UE4c++ 材质功能大全(想起来就补充一个)

前言:才想起写一个这个文档,前期内容较少,其他内容,我也只会想起来加一加!

材质功能大全

    • 竖直百分比进度
    • [HSV To RGB](#HSV To RGB)
    • RGB转灰度值
    • [AlphaComosote(Premultiplied Alpha)预乘 转 Translucent (sRGB与Pre-Multiplied Alpha)](#AlphaComosote(Premultiplied Alpha)预乘 转 Translucent (sRGB与Pre-Multiplied Alpha))

竖直百分比进度

HSV To RGB

cpp 复制代码
// H, S, V

H = H * 360;

float C = V * S;
float X = C * (1 - abs((H/60)%2 - 1));
float m = V - C;

float RR = 0;
float GG = 0;
float BB = 0;

if (H >= 0 && H < 60)
{
  RR = C;
  GG = X;
  BB = 0;
}
else if (H >= 60 && H < 120)
{
  RR = X;
  GG = C;
  BB = 0;
}
else if (H >= 120 && H < 180)
{
  RR = 0;
  GG = C;
  BB = X;
}
else if (H >= 180 && H < 240)
{
  RR = 0;
  GG = X;
  BB = C;
}
else if (H >= 240 && H < 300)
{
  RR = X;
  GG = 0;
  BB = C;
}
else
{
  RR = C;
  GG = 0;
  BB = X;
}

return float3(RR+m, GG+m, BB+m);

RGB转灰度值

cpp 复制代码
float red = color.r * 0.299f;
float green = color.g * 0.587f;
float blue = color.b * 0.114f;

 return red + green + blue;

AlphaComosote(Premultiplied Alpha)预乘 转 Translucent (sRGB与Pre-Multiplied Alpha)

注:RetainBox输出颜色是AlphaComosote(Premultiplied Alpha类型的,直接用它计算颜色透明度,有问题)
国外文档参考
国内文档参考

转换原理:

假设画布为B,前景图层为A,A的不透明度为alpha,融合后输出图像为C,那么alpha blending公式如下

cpp 复制代码
C_r = A_r * alpha + B_r * (1 - alpha)
C_g = A_g * alpha + B_g * (1 - alpha)
C_b = A_b * alpha + B_b * (1 - alpha)

推导得我们需要的结果:

相关推荐
minji...36 分钟前
算法---模拟/高精度/枚举
数据结构·c++·算法·高精度·模拟·枚举
序属秋秋秋2 小时前
《Linux系统编程之进程基础》【进程优先级】
linux·运维·c语言·c++·笔记·进程·优先级
草莓熊Lotso2 小时前
C++ STL map 系列全方位解析:从基础使用到实战进阶
java·开发语言·c++·人工智能·经验分享·网络协议·everything
_F_y2 小时前
C++IO流
c++
草莓熊Lotso2 小时前
《算法闯关指南:优选算法--模拟》--41.Z 字形变换,42.外观数列
开发语言·c++·算法
AA陈超9 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
coderxiaohan9 小时前
【C++】仿函数 + 模板进阶
开发语言·c++
思成不止于此11 小时前
深入理解 C++ 多态:从概念到实现的完整解析
开发语言·c++·笔记·学习·多态·c++40周年
布丁写代码12 小时前
GESP C++ 一级 2025年09月真题解析
开发语言·c++·程序人生·学习方法
喵个咪14 小时前
Qt 优雅实现线程安全单例模式(模板化 + 自动清理)
c++·后端·qt