问题描述
我被卡住了,向你们寻求帮助。我想使用从字符串评估的自定义数学方程创建图形。但让我先解释一下情况。
我正在学习一些教程,在我的项目中,我可以使用数学方程式绘制自定义动画图形。 我使用计算着色器来提高性能,并且我在其中为每个方程提供了我的函数。
以下是其中一种效果的示例:
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;
}
结果示例:
[
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 (将#修改为@)