Unity3d 如何生成统一的颜色直方图?

Unity3d 如何生成统一的颜色直方图?,unity3d,shader,Unity3d,Shader,我有一个统一的纹理2D,我想根据每个像素的色调值生成一个颜色直方图。我尝试过使用getPixels,但对于1920x1080纹理来说,速度太慢了 if (tex == null) { return null; } tex = GetComponent<GUITexture>().texture as Texture2D; Color32[] texColors = tex.GetPixels32(); int total = texColors.Length; int[]

我有一个统一的纹理2D,我想根据每个像素的色调值生成一个颜色直方图。我尝试过使用getPixels,但对于1920x1080纹理来说,速度太慢了

if (tex == null)
{
    return null;
}
tex = GetComponent<GUITexture>().texture as Texture2D;
Color32[] texColors = tex.GetPixels32();
int total = texColors.Length;

int[] Harray = new int[360];
for (int i = 0; i < total; i++)
{
    float H;
    float S;
    float V;

    Color.RGBToHSV(new Color(texColors[i].r, texColors[i].g, texColors[i].b),out H,out S,out V);
    Harray[(int)H]++;
}


for (int i = 0; i < 360; i++)
{
    PlotManager.Instance.PlotAdd("Hue", Harray[i]);
}
if(tex==null)
{
返回null;
}
tex=GetComponent()。纹理为Texture2D;
Color32[]texColors=tex.GetPixels32();
int total=texColors.Length;
int[]哈雷=新int[360];
对于(int i=0;i

我想shader可能会有所帮助,但我在shader编程方面没有经验。着色器可以填充色调引用数组并返回它,同时保持良好的帧速率吗?

unity store上有一个资产使用带有RWStructuredBuffer的计算着色器来实现这一点:

真的unity不是为这样模糊的事情构建的。这不是它的目的。你也可以开始尝试在原生iOS中制作骨骼动画,你知道吗?我建议您从资产商店购买NatCam,并与该软件包的制造商联系,获得一个本机插件以满足此需求。@JoeBlow您为NatCam工作吗?或者只是一个超级粉丝?我看到的所有StackOverflow帖子都有你的推荐——考虑购买它并努力寻找第二种意见;)嘿@EvanKnowles!很明显,我不为纳特坎工作。真是奇迹,终于有人发布了一个合适的相机软件包,因为Unity基本上还没有相机软件。这是一个“每个人都在使用它”的例子,很像AntiCheatToolKit或Vectorsy。实现这一目标需要6-12个人月的工作。