This commit is contained in:
micuat 2020-11-01 16:08:56 +01:00
parent 00ba0ca9aa
commit 71be209a2f
8 changed files with 68 additions and 51 deletions

View file

@ -1,9 +1,10 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<ZONE_B> <ZONE_B>
<XY>61.2245, -28.5714</XY> <XY>61.2245, -16.3265</XY>
<scale>1.7965</scale> <scale>1.7965</scale>
<device>video3</device> <device>video3</device>
<thermo_delay>4</thermo_delay> <thermo_delay>4</thermo_delay>
<blend_add>1</blend_add> <blend_add>1</blend_add>
<render_times>3</render_times> <render_times>0</render_times>
<trace_times>10</trace_times>
</ZONE_B> </ZONE_B>

View file

@ -193,13 +193,7 @@ void main() {
else { else {
vec4 pointCloudColor = texture(u_ofcam, st); vec4 pointCloudColor = texture(u_ofcam, st);
vec4 energyColor = texture(u_energy, st); vec4 energyColor = texture(u_energy, st);
vec4 bufColor = texture(u_buffer1, st);
float newA = length(bufColor.rgb) / 2;
newA = min(1, newA);
gl_FragColor = vec4(mix(pointCloudColor.rgb,bufColor.rgb, newA), 1);
// gl_FragColor = vec4(mix(pointCloudColor.rgb, bufColor.rgb, min(1, length(bufColor.rgb))), 1.0);
gl_FragColor = vec4(mix(pointCloudColor.rgb, energyColor.rgb, energyColor.a), 1.0); gl_FragColor = vec4(mix(pointCloudColor.rgb, energyColor.rgb, energyColor.a), 1.0);
// gl_FragColor = vec4(mix(vec3(0), pointCloudColor.rgb, pointCloudColor.a), 1.0);
} }
#endif #endif

View file

@ -117,20 +117,12 @@ void main()
vec3 remapedColor = mix(remapedColorC, remapedColorW, rate); vec3 remapedColor = mix(remapedColorC, remapedColorW, rate);
float alpha = min(1, max(0, 1 - pow(gAge,4))); float alpha = min(1, max(0, 1 - pow(gAge,4)));
if(uEnergy > 0) { if(uEnergy > 0) {
// alpha = 1; alpha *= 0.05;
alpha *= 0.1;
} }
else { else {
alpha *= 0.1; alpha *= 0.1;
} }
// if(vTemperature < 0.5) {
// alpha *= vTemperature * 2;
// }
// if(vTarget.w >0.5) {
// alpha *= 2;
// }
if(gPos.z > -200) { if(gPos.z > -200) {
alpha = 0; alpha = 0;
} }

View file

@ -1,7 +1,7 @@
layout (points) in; layout (points) in;
layout (line_strip) out; layout (line_strip) out;
layout (max_vertices = 16) out; layout (max_vertices = 4) out;
// OF handled uniforms and attributes. // OF handled uniforms and attributes.
uniform mat4 projectionMatrix; uniform mat4 projectionMatrix;
@ -15,6 +15,7 @@ uniform int uEnergy;
in vec4 vPosition[]; in vec4 vPosition[];
in vec4 vPrevPosition[]; in vec4 vPrevPosition[];
in vec4 vOrgPosition[];
in vec2 vTexCoord[]; in vec2 vTexCoord[];
flat in int vValid[]; flat in int vValid[];
@ -46,14 +47,14 @@ void main()
{ {
vec3 vOffset; vec3 vOffset;
if(uEnergy > 0) { if(uEnergy > 0) {
if(gAge < 0.01) return; if(gAge < 0.005) return;
if(length(gTarget.xyz) > 1000) return; // if(length(gTarget.xyz) > 1000) return;
vOffset = (vPrevPosition[i].xyz - vPosition[i].xyz); vOffset = (vPrevPosition[i].xyz - vPosition[i].xyz);
vOffset += normalize(vOffset) * 10; vOffset += normalize(vOffset) * 20;
} }
else { else {
vOffset = (vPrevPosition[i].xyz - vPosition[i].xyz); // vOffset = (vPrevPosition[i].xyz - vPosition[i].xyz);
vOffset += normalize(vOffset) * 2; // vOffset = normalize(vOffset) * 2;
vOffset = vec3(1,0,0); vOffset = vec3(1,0,0);
} }
// if(length(vOffset) < 4) { // if(length(vOffset) < 4) {
@ -68,16 +69,13 @@ void main()
gl_Position = projectionMatrix * (shiftPos + vec4(0.0, 0.0, 0.0, 0.0) * uSpriteSize); gl_Position = projectionMatrix * (shiftPos + vec4(0.0, 0.0, 0.0, 0.0) * uSpriteSize);
EmitVertex(); EmitVertex();
// if(gAge > 0 && gTarget.w > 0) {
// for(int j = 0; j < 2; j++) {
// gl_Position = projectionMatrix * (vPosition[i] + vec4(0.0, float(j+1), 0.0, 0.0) * uSpriteSize);
// EmitVertex();
// gl_Position = projectionMatrix * (shiftPos + vec4(0.0, float(j+1), 0.0, 0.0) * uSpriteSize);
// EmitVertex();
// }
// }
}
EndPrimitive();
// gl_Position = projectionMatrix * (vOrgPosition[i] + vec4(0.0, 0.0, 0.0, 0.0) * uSpriteSize);
// EmitVertex();
// gl_Position = projectionMatrix * (vec4(1,0,0,0) + vOrgPosition[i]);
// EmitVertex();
}
EndPrimitive(); EndPrimitive();
} }

View file

@ -19,6 +19,7 @@ out float vTemperature;
out float vAge; out float vAge;
out vec4 vPosition; out vec4 vPosition;
out vec4 vPrevPosition; out vec4 vPrevPosition;
out vec4 vOrgPosition;
void main() void main()
{ {
@ -28,12 +29,14 @@ void main()
vec4 vTarget = texture(particles3, vTexCoord); vec4 vTarget = texture(particles3, vTexCoord);
vTemperature = misc.x; vTemperature = misc.x;
vAge = misc.y; vAge = misc.y;
if(uEnergy > 0) { vPos = texture(particles0, vTexCoord).xyz;
vPos = texture(particles0, vTexCoord).xyz; // if(uEnergy > 0) {
} // vPos = texture(particles0, vTexCoord).xyz;
else { // }
vPos = texture(particles5, vTexCoord).xyz; // else {
} // vPos = texture(particles5, vTexCoord).xyz;
// }
vPosition = modelViewMatrix * vec4(vPos, 1.0); vPosition = modelViewMatrix * vec4(vPos, 1.0);
vPrevPosition = modelViewMatrix * vec4(texture(particles4, vTexCoord).xyz, 1.0); vPrevPosition = modelViewMatrix * vec4(texture(particles4, vTexCoord).xyz, 1.0);
vOrgPosition = modelViewMatrix * vec4(texture(particles5, vTexCoord).xyz, 1.0);
} }

View file

@ -166,36 +166,37 @@ void main()
thermo = misc.x; thermo = misc.x;
} }
else { // wandering else { // wandering
age += 01.02; age += 0.1;
thermo = misc.x; thermo = misc.x;
} }
if(vValid == 1 && target.w > 0 && length(target.xy - pos.xy) < 100) { // arrived if(vValid == 1 && target.w > 0 && length(target.xy - pos.xy) < 100) { // arrived
age += 0.01; age += 0.04;
} }
// wandering // wandering
vec3 force = vec3(0,0,0); vec3 force = vec3(0,0,0);
if(vValid == 1 && target.w == 0) { if(vValid == 1 && target.w == 0) {
float th = 3.1415 * 4 * simplex3d_fractal(vec3(pos.xyz * 0.001)); float th = 3.1415 * 4 * simplex3d_fractal(vec3(pos.xyz * 0.0001));
float phi = 3.1415 * simplex3d_fractal(pos.xyz * 0.002); float phi = 3.1415 * simplex3d_fractal(pos.xyz * 0.0002);
force.x += cos(th) * cos(phi); force.x += cos(th) * cos(phi);
force.y += sin(th) * cos(phi); force.y += sin(th) * cos(phi);
force.z += sin(phi); force.z += sin(phi);
force *= 100; force *= 100;
} }
else { else {
// float th = 3.1415 * 4 * simplex3d_fractal(vec3(pos.xyz * 0.01)); float th = 3.1415 * 4 * simplex3d_fractal(vec3(pos.xyz * 0.01));
// float phi = 3.1415 * simplex3d_fractal(pos.xyz * 0.02); float phi = 3.1415 * simplex3d_fractal(pos.xyz * 0.02);
// force.x += cos(th) * cos(phi); force.x += cos(th) * cos(phi);
// force.y += sin(th) * cos(phi); force.y += sin(th) * cos(phi);
// force.z += sin(phi); force.z += sin(phi);
// force *= 100; force *= 100;
} }
int trapped = 0;
if(age < 0.001) { // targetting if(age < 0.001) { // targetting
target.w = 0; target.w = 0;
if(random3(pos).x > mod(u_time*0.1+random3(pos).y,1) + pow(max(0,length(texCoordVarying.st/fraction - uHottest0.st + random3(pos).xy*5)/50),1)) { if(mod(u_time*0.1+simplex3d_fractal(vec3(texCoordVarying,u_time)),1) > length(texCoordVarying.st/fraction - uHottest0.st + mod(random3(pos).xy, 8)-vec2(4))/10) {
vec2 h = uHottest1.st; vec2 h = uHottest1.st;
vec4 hray = texture(u_world, h); vec4 hray = texture(u_world, h);
float hdepth = -depth * 65535.0; float hdepth = -depth * 65535.0;
@ -204,8 +205,12 @@ void main()
target.xyz = H + random3(pos) * 3; target.xyz = H + random3(pos) * 3;
target.w = 1; target.w = 1;
thermo += random3(pos).y * 0.2 - 0.1; thermo += random3(pos).y * 0.2 - 0.1;
if(mod(random3(pos).x,1) > 0.05) {
trapped = 1;
}
} }
else if(random3(pos).x > mod(u_time*0.1+random3(pos).y,1) + 2*pow(max(0,length(texCoordVarying.st/fraction - uHottest1.st + random3(pos).xy*5)/50),1)) { else if(mod(u_time*0.1+simplex3d_fractal(vec3(texCoordVarying,u_time)),1) > length(texCoordVarying.st/fraction - uHottest1.st + mod(random3(pos).xy, 8)-vec2(4))/10) {
vec2 h = uHottest0.st; vec2 h = uHottest0.st;
vec4 hray = texture(u_world, h); vec4 hray = texture(u_world, h);
float hdepth = -depth * 65535.0; float hdepth = -depth * 65535.0;
@ -214,9 +219,15 @@ void main()
target.xyz = H + random3(pos) * 3; target.xyz = H + random3(pos) * 3;
target.w = 1; target.w = 1;
thermo += random3(pos).y * 0.2 - 0.1; thermo += random3(pos).y * 0.2 - 0.1;
if(mod(random3(pos).x,1) > 0.05) {
trapped = 1;
}
} }
age = 0.001;
} }
if(target.w > 0) { // go to target if(target.w > 0) { // go to target
float th = atan(-pos.y + target.y, -pos.x + target.x); float th = atan(-pos.y + target.y, -pos.x + target.x);
float phi = atan(-pos.z + target.z, length(target.xy-pos.xy)); float phi = atan(-pos.z + target.z, length(target.xy-pos.xy));
@ -225,7 +236,11 @@ void main()
force.x = cos(th) * cos(phi); force.x = cos(th) * cos(phi);
force.y = sin(th) * cos(phi); force.y = sin(th) * cos(phi);
force.z = sin(phi); force.z = sin(phi);
force *= 100 + 200 * simplex3d_fractal(vec3(texCoordVarying, 0.0)); force *= 100 + 300 * simplex3d_fractal(vec3(texCoordVarying, 0.0));
// if(trapped == 1) {
// target.w = 0;
// }
} }
// damping // damping
@ -236,6 +251,9 @@ void main()
// move // move
prevPos = pos; prevPos = pos;
// if(length(pos - posWorld.xyz) < 300) {
// prevPos = posWorld.xyz;
// }
pos += elapsed * vel; pos += elapsed * vel;
posOut = vec4(pos, 1.0); posOut = vec4(pos, 1.0);

View file

@ -13,6 +13,9 @@ uniform sampler2DRect u_warm2;
uniform sampler2DRect u_cold1; uniform sampler2DRect u_cold1;
uniform sampler2DRect u_cold2; uniform sampler2DRect u_cold2;
uniform vec3 uHottest0;
uniform vec3 uHottest1;
uniform bool uCalib; uniform bool uCalib;
uniform vec2 uCalibXY; uniform vec2 uCalibXY;
uniform float uCalibScale; uniform float uCalibScale;
@ -166,6 +169,11 @@ void main() {
color.rgb = remapedColorW; color.rgb = remapedColorW;
// color.rg = palette.st; // color.rg = palette.st;
vec2 st2 = st * vec2(2);
if(length(st2 - uHottest0.st) < 10) {
color.rgb = vec3(0);
}
gl_FragColor = color; gl_FragColor = color;
} }
#endif #endif

View file

@ -305,6 +305,9 @@ void ofApp::drawMain()
// { // {
// mainShader.setUniformTexture("u_" + gradientNames.at(i), gradients.at(gradientNames.at(i))); // mainShader.setUniformTexture("u_" + gradientNames.at(i), gradients.at(gradientNames.at(i)));
// } // }
mainShader.setUniform3f("uHottest0", hotspot0);
mainShader.setUniform3f("uHottest1", hotspot1);
mainShader.setUniform3f("uBetween", uBetween);
mainShader.setUniformTexture("u_warm1", gradients.at("warm1")); mainShader.setUniformTexture("u_warm1", gradients.at("warm1"));
mainShader.setUniformTexture("u_warm2", gradients.at("warm2")); mainShader.setUniformTexture("u_warm2", gradients.at("warm2"));
mainShader.setUniformTexture("u_cold1", gradients.at("cold1")); mainShader.setUniformTexture("u_cold1", gradients.at("cold1"));