Skip to content

Commit

Permalink
crazy ball thing, ready to move into RGBDVS
Browse files Browse the repository at this point in the history
  • Loading branch information
obviousjim committed Apr 10, 2014
1 parent ecb340d commit 9c3f697
Show file tree
Hide file tree
Showing 8 changed files with 330 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@
E7131FCE18F7254C00F1277E /* tinyxmlparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tinyxmlparser.cpp; sourceTree = "<group>"; };
E7131FD018F7254C00F1277E /* ofxXmlSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ofxXmlSettings.cpp; sourceTree = "<group>"; };
E7131FD118F7254C00F1277E /* ofxXmlSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ofxXmlSettings.h; sourceTree = "<group>"; };
E7131FD618F746BE00F1277E /* voxel_points.frag */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = voxel_points.frag; sourceTree = "<group>"; };
E7131FD718F746BE00F1277E /* voxel_points.vert */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.glsl; path = voxel_points.vert; sourceTree = "<group>"; };
E7E077E415D3B63C0020DFD4 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = "<absolute>"; };
E7E077E715D3B6510020DFD4 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = "<absolute>"; };
E7F985F515E0DE99003869B5 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = "<absolute>"; };
Expand Down Expand Up @@ -274,6 +276,8 @@
E70CD8EA186650E200955691 /* shaders */ = {
isa = PBXGroup;
children = (
E7131FD618F746BE00F1277E /* voxel_points.frag */,
E7131FD718F746BE00F1277E /* voxel_points.vert */,
E70CD8EB186650E200955691 /* voxel_lines.frag */,
E70CD8EC186650E200955691 /* voxel_lines.vert */,
);
Expand Down
50 changes: 40 additions & 10 deletions ShaderBackgroundTest/bin/data/settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,46 +8,76 @@
<Widget>
<Kind>44</Kind>
<Name>num voxels</Name>
<Value>21</Value>
<Value>20</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>voxel spacing</Name>
<Value>27.290639877</Value>
<Value>63.645317078</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>sphere radius</Name>
<Value>317.241363525</Value>
<Value>624.137939453</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>sphere percent</Name>
<Value>0.935960531</Value>
<Value>1.093595982</Value>
</Widget>
<Widget>
<Kind>6</Kind>
<Name>distance range</Name>
<HighValue>1.655172348</HighValue>
<HighValue>1.123153448</HighValue>
<LowValue>0.000000000</LowValue>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>twist factor</Name>
<Name>twist speed x</Name>
<Value>0.000359606</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>twist factor x</Name>
<Value>0.064039409</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>twist speed y</Name>
<Value>0.000009852</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>twist factor y</Name>
<Value>0.000000000</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise distort</Name>
<Value>1.000000000</Value>
<Name>noise distort x</Name>
<Value>0.310344815</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise distort y</Name>
<Value>0.714285731</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise distort z</Name>
<Value>0.399014771</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise distort radial</Name>
<Value>0.778325140</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise density</Name>
<Value>0.057142861</Value>
<Value>0.006896552</Value>
</Widget>
<Widget>
<Kind>4</Kind>
<Name>noise speed</Name>
<Value>0.001970443</Value>
<Value>0.001477833</Value>
</Widget>
18 changes: 12 additions & 6 deletions ShaderBackgroundTest/bin/data/shaders/voxel_lines.vert
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@
uniform float spherePercent;
uniform float sphereRadius;

uniform float twistFactor;
uniform float spiralFactor;
uniform float twistFactorX;
uniform float twistFactorY;

uniform float noiseDistort;
uniform vec4 noiseDistort;
uniform float noiseDensity;
uniform float noisePosition;


uniform float minDistance;
uniform float maxDistance;

Expand Down Expand Up @@ -167,15 +168,20 @@ float snoise(vec4 v)


vec3 vertPos(vec3 basePos){
basePos += vec3( (noiseDistort.x == 0.0) ? 0.0 : snoise(vec4(basePos.xyz*noiseDensity, noisePosition)) * noiseDistort.x,
(noiseDistort.y == 0.0) ? 0.0 : snoise(vec4(basePos.yxz*noiseDensity, noisePosition)) * noiseDistort.y,
(noiseDistort.z == 0.0) ? 0.0 : snoise(vec4(basePos.zxy*noiseDensity, noisePosition)) * noiseDistort.z) * 100.0;

vec3 fromCenterDir = normalize(basePos.xyz);
vec3 spherePosition = fromCenterDir * sphereRadius;

float noiseEffect = snoise( vec4(basePos*noiseDensity,noisePosition) ) * noiseDistort;
float noiseEffect = snoise( vec4(basePos*noiseDensity,noisePosition) ) * noiseDistort.w;
vec3 towardsSphere = mix(basePos.xyz, spherePosition, spherePercent+noiseEffect);

mat4 twist = rotationMatrix( vec3(0.0,1.0,0.0), basePos.y*twistFactor );
mat4 twist = rotationMatrix( vec3(0.0,1.0,0.0), basePos.y*twistFactorY );
mat4 twist2 = rotationMatrix( vec3(1.0,0.0,0.0), basePos.x*twistFactorX );

return (twist * vec4(towardsSphere,1.0)).xyz;
return (twist2 * twist * vec4(towardsSphere,1.0)).xyz;
}

void main(void) {
Expand Down
19 changes: 19 additions & 0 deletions ShaderBackgroundTest/bin/data/shaders/voxel_points.frag
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#version 120

uniform float minDistance;
uniform float maxDistance;

varying vec3 normPos;
varying float vertDistance;

float map(float value, float inputMin, float inputMax, float outputMin, float outputMax) {;
return ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin);
}

void main() {

//normal debug system
// gl_FragColor = vec4(normPos/vec3(100.) + vec3(.5),1.0);
gl_FragColor = vec4(vec3( smoothstep(minDistance, maxDistance, vertDistance) ), 1.0);
// gl_FragColor = vec4(1.0, 0.0,0.0,1.0);
}
198 changes: 198 additions & 0 deletions ShaderBackgroundTest/bin/data/shaders/voxel_points.vert
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@

uniform float spherePercent;
uniform float sphereRadius;

uniform float twistFactorX;
uniform float twistFactorY;

uniform vec4 noiseDistort;
uniform float noiseDensity;
uniform float noisePosition;

uniform float minDistance;
uniform float maxDistance;

varying vec3 normPos;
varying float vertDistance;


//-----------------------------
mat4 rotationMatrix(vec3 axis, float angle)
{
axis = normalize(axis);
float s = sin(angle);
float c = cos(angle);
float oc = 1.0 - c;

return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,
oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,
oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,
0.0, 0.0, 0.0, 1.0);
}
//-----------------------------

//START NOISE ---------------------------
float map(float value, float inputMin, float inputMax, float outputMin, float outputMax) {;
return ((value - inputMin) / (inputMax - inputMin) * (outputMax - outputMin) + outputMin);
}

//
// Description : Array and textureless GLSL 2D/3D/4D simplex
// noise functions.
// Author : Ian McEwan, Ashima Arts.
// Maintainer : ijm
// Lastmod : 20110822 (ijm)
// License : Copyright (C) 2011 Ashima Arts. All rights reserved.
// Distributed under the MIT License. See LICENSE file.
// https://github.com/ashima/webgl-noise
//

vec4 mod289(vec4 x) {
return x - floor(x * (1.0 / 289.0)) * 289.0; }

float mod289(float x) {
return x - floor(x * (1.0 / 289.0)) * 289.0; }

vec4 permute(vec4 x) {
return mod289(((x*34.0)+1.0)*x);
}

float permute(float x) {
return mod289(((x*34.0)+1.0)*x);
}

vec4 taylorInvSqrt(vec4 r)
{
return 1.79284291400159 - 0.85373472095314 * r;
}

float taylorInvSqrt(float r)
{
return 1.79284291400159 - 0.85373472095314 * r;
}

vec4 grad4(float j, vec4 ip)
{
const vec4 ones = vec4(1.0, 1.0, 1.0, -1.0);
vec4 p,s;

p.xyz = floor( fract (vec3(j) * ip.xyz) * 7.0) * ip.z - 1.0;
p.w = 1.5 - dot(abs(p.xyz), ones.xyz);
s = vec4(lessThan(p, vec4(0.0)));
p.xyz = p.xyz + (s.xyz*2.0 - 1.0) * s.www;

return p;
}

// (sqrt(5) - 1)/4 = F4, used once below
#define F4 0.309016994374947451

float snoise(vec4 v)
{
const vec4 C = vec4( 0.138196601125011, // (5 - sqrt(5))/20 G4
0.276393202250021, // 2 * G4
0.414589803375032, // 3 * G4
-0.447213595499958); // -1 + 4 * G4

// First corner
vec4 i = floor(v + dot(v, vec4(F4)) );
vec4 x0 = v - i + dot(i, C.xxxx);

// Other corners

// Rank sorting originally contributed by Bill Licea-Kane, AMD (formerly ATI)
vec4 i0;
vec3 isX = step( x0.yzw, x0.xxx );
vec3 isYZ = step( x0.zww, x0.yyz );
// i0.x = dot( isX, vec3( 1.0 ) );
i0.x = isX.x + isX.y + isX.z;
i0.yzw = 1.0 - isX;
// i0.y += dot( isYZ.xy, vec2( 1.0 ) );
i0.y += isYZ.x + isYZ.y;
i0.zw += 1.0 - isYZ.xy;
i0.z += isYZ.z;
i0.w += 1.0 - isYZ.z;

// i0 now contains the unique values 0,1,2,3 in each channel
vec4 i3 = clamp( i0, 0.0, 1.0 );
vec4 i2 = clamp( i0-1.0, 0.0, 1.0 );
vec4 i1 = clamp( i0-2.0, 0.0, 1.0 );

// x0 = x0 - 0.0 + 0.0 * C.xxxx
// x1 = x0 - i1 + 1.0 * C.xxxx
// x2 = x0 - i2 + 2.0 * C.xxxx
// x3 = x0 - i3 + 3.0 * C.xxxx
// x4 = x0 - 1.0 + 4.0 * C.xxxx
vec4 x1 = x0 - i1 + C.xxxx;
vec4 x2 = x0 - i2 + C.yyyy;
vec4 x3 = x0 - i3 + C.zzzz;
vec4 x4 = x0 + C.wwww;

// Permutations
i = mod289(i);
float j0 = permute( permute( permute( permute(i.w) + i.z) + i.y) + i.x);
vec4 j1 = permute( permute( permute( permute (
i.w + vec4(i1.w, i2.w, i3.w, 1.0 ))
+ i.z + vec4(i1.z, i2.z, i3.z, 1.0 ))
+ i.y + vec4(i1.y, i2.y, i3.y, 1.0 ))
+ i.x + vec4(i1.x, i2.x, i3.x, 1.0 ));

// Gradients: 7x7x6 points over a cube, mapped onto a 4-cross polytope
// 7*7*6 = 294, which is close to the ring size 17*17 = 289.
vec4 ip = vec4(1.0/294.0, 1.0/49.0, 1.0/7.0, 0.0) ;

vec4 p0 = grad4(j0, ip);
vec4 p1 = grad4(j1.x, ip);
vec4 p2 = grad4(j1.y, ip);
vec4 p3 = grad4(j1.z, ip);
vec4 p4 = grad4(j1.w, ip);

// Normalise gradients
vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));
p0 *= norm.x;
p1 *= norm.y;
p2 *= norm.z;
p3 *= norm.w;
p4 *= taylorInvSqrt(dot(p4,p4));

// Mix contributions from the five corners
vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.0);
vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.0);
m0 = m0 * m0;
m1 = m1 * m1;
return 49.0 * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 )))
+ dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ;
}
//END NOISE ---------------------------


vec3 vertPos(vec3 basePos){
basePos += vec3((noiseDistort.x == 0.0) ? 0.0 : snoise(vec4(basePos.xyz*noiseDensity, noisePosition)) * noiseDistort.x,
(noiseDistort.y == 0.0) ? 0.0 : snoise(vec4(basePos.yxz*noiseDensity, noisePosition)) * noiseDistort.y,
(noiseDistort.z == 0.0) ? 0.0 : snoise(vec4(basePos.zxy*noiseDensity, noisePosition)) * noiseDistort.z) * 100.0;
return basePos;

// vec3 fromCenterDir = normalize(basePos.xyz);
// vec3 spherePosition = fromCenterDir * sphereRadius;
//
// float noiseEffect = snoise( vec4(basePos*noiseDensity,noisePosition) ) * noiseDistort.w;
// vec3 towardsSphere = mix(basePos.xyz, spherePosition, spherePercent+noiseEffect);
//
// mat4 twist = rotationMatrix( vec3(0.0,1.0,0.0), basePos.y*twistFactorY );
// mat4 twist2 = rotationMatrix( vec3(1.0,0.0,0.0), basePos.x*twistFactorX );
//
// return (twist2 * twist * vec4(towardsSphere,1.0)).xyz;
}

void main(void) {

vec4 basePos = gl_Vertex;

basePos.xyz = vertPos(basePos.xyz);

vertDistance = length(gl_Vertex.xyz - basePos.xyz);

gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * basePos;

gl_FrontColor = gl_Color;
}
Loading

0 comments on commit 9c3f697

Please sign in to comment.