如何在Shadertoy中编写谱方法反应扩散求解器
问题背景
- 即便使用20点拉普拉斯算子,在输入圆对称种子时仍然会出现坐标系相关的伪影。

- 这是尝试使用谱求解器的原因之一。
- 下述为采用前向欧拉求解的最简拉普拉斯实现核心代码:
#define A(U) texture(iChannel0,(U)/iResolution.xy) void mainImage( out vec4 Q, in vec2 U ) { // Lookup Field Q = A(U); // Mean Field // Two way: horizontal, vertical vec4 sum2 = A(U+vec2(0,1))+A(U+vec2(1,0))+A(U-vec2(0,1))+A(U-vec2(1,0)); vec4 mean2 = 1./4.*(sum2); // Laplacian vec4 laplacian2 = (mean2 - Q); // Diffuse each variable differently : Q += laplacian2 * vec4(1, .4, 1, 1); // Compute reactions: Q.x = Q.x * .99 + 0.01 * Q.y; Q.y = Q.y + .05 * Q.y * (1. - Q.y) - .03 * Q.x - 1e-3; // Prevent Negative Values (depends on system): Q = max(Q, 0.); }
核心问题
请问如何将上述代码改写为Shadertoy平台可运行的谱求解器实现?
内容的提问来源于stack exchange,提问作者David Jonsson
相关产品推荐
相关产品推荐

