我想绘制一个三角形,实现类似火焰的动态流动效果…这个例子是3Dlabs里面的,我按照下面这个在程序中设定了一致变量,
但是3DNoise,
0 -1
0 -1
这两个怎么设置啊?
请大家帮帮忙啊,我绘制出来的效果单一的颜色,而且不流动…
3DNoise
Klein All -PointCloud -Alien -BlobbyCloud -Teapot
0.6
0.7
0.8 0.7 0.0
0.6 0.1 0.0
0
0 -1
0 -1
顶点着色器
varying vec3 Position;
uniform float Scale;
void main(void)
{
Position = vec3(gl_Vertex) * Scale;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
像素着色器
varying vec3 Position;
uniform float Offset;
uniform vec3 FireColor1;
uniform vec3 FireColor2;
uniform bool Teapot;
uniform float Extent;
uniform sampler3D sampler3d;
void main (void)
{
vec4 noisevec;
vec3 color;
float intensity;
float alpha;
noisevec = texture3D(sampler3d, Position);
noisevec = texture3D(sampler3d, vec3 (Position.x+noisevec[1],
Position.y-noisevec[3]+Offset,
Position.z+noisevec[1]));
intensity = 0.75 * (noisevec[0] + noisevec[1] + noisevec[2] + noisevec[3]);
intensity = 1.95 * abs(2.0 * intensity - 0.35);
intensity = clamp(intensity, 0.0, 1.0);
alpha = fract((Position.y+Extent)*0.65);
color = mix(FireColor1, FireColor2, intensity) * (1.0 - alpha) * 2.0;
color = clamp(color, 0.0, 1.0);
alpha = 1.0 - alpha * intensity;
alpha *= alpha;
gl_FragColor = vec4(color, alpha);
}