来自自定义字符串函数的图形

问题描述

我被卡住了,向你们寻求帮助。我想使用从字符串评估的自定义数学方程创建图形。但让我先解释一下情况。

我正在学习一些教程,在我的项目中,我可以使用数学方程式绘制自定义动画图形。 我使用计算着色器来提高性能,并且我在其中为每个方程提供了我的函数

以下是其中一种效果的示例:

float3 Ripple(float u,float v,float t)
{
    float d = sqrt(u * u + v * v);
    float3 p;
    p.x = u;
    p.y = sin(PI * (4.0 * d - t));
    p.y /= 1.0 + 10.0 * d;
    p.z = v;
    return p;
}

结果示例:

[

example of result1

UV 坐标也在同一个计算着色器中再次计算以节省性能,因为单个图形中可以有多达一百万个点(立方体)。

RWStructuredBuffer<float3> _Positions;

uint _Resolution;
float _Step,_Time,_TransitionProgress;
bool _AbsoluteY,_InvertY;

float2 GetUV(uint3 id)
{
    return (id.xy + 0.5) * _Step - 1.0;
}

void SetPosition(uint3 id,float3 position)
{
    if (id.x < _Resolution && id.y < _Resolution)
    {
        _Positions[id.x + id.y * _Resolution] = position;
    }
}

所以我想要实现的是能够在用户界面的某处输入一些复杂的公式,比如“sin(u + 4) - cos(PI * v * abs(u))”,例如在输入字段中。然后从字符串转换这个公式,以便它可以在计算着色器内部计算,参数存储在那里,即 u 和 v。

我知道我可以使用 ComputeBuffer.getData() 获取这些 uv 参数,但是我必须在 cpu 端进行所有计算并将其发送到 ComputeShader,这对性能造成了很大的影响。但即便如此,我知道如何将公式从字符串转换为可读的方程...... 我的意思是有很多图形计算应用程序,所以应该是可能的,对吗?

我已经用谷歌搜索了几天,但找不到我要找的东西,所以非常感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)