Subversion Repositories gelsvn

Rev

Rev 394 | Rev 399 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 394 Rev 397
Line 42... Line 42...
42
GLuint Harmonics::prog_P0;
42
GLuint Harmonics::prog_P0;
43
 
43
 
44
 
44
 
45
namespace
45
namespace
46
{
46
{
-
 
47
 
-
 
48
	string vss =
-
 
49
"#version 120\n"
-
 
50
"#extension GL_EXT_gpu_shader4 : enable\n"
-
 
51
"	\n"
-
 
52
"	\n"
-
 
53
"	attribute float eigenvalue;\n"
-
 
54
"	attribute float eigenvalue2;\n"
-
 
55
"	varying vec3 normal;\n"
-
 
56
"	varying float eig;\n"
-
 
57
"	varying float eig2;\n"
-
 
58
"	\n"
-
 
59
"	void main(void)\n"
-
 
60
"	{\n"
-
 
61
"		gl_Position =  ftransform();\n"
-
 
62
"		normal = normalize(gl_NormalMatrix * gl_Normal);\n"
-
 
63
"		eig = eigenvalue;\n"
-
 
64
"		eig2 = eigenvalue2;\n"
-
 
65
"	}\n";
-
 
66
	
-
 
67
string fss = 	
-
 
68
"#version 120\n"
-
 
69
"#extension GL_EXT_gpu_shader4 : enable\n"
-
 
70
"	\n"
-
 
71
"	varying vec3 normal;\n"
-
 
72
"	varying float eig;\n"
-
 
73
"	varying float eig2;\n"
-
 
74
"	uniform float eig_max;\n"
-
 
75
"	uniform float eig_max2;\n"
-
 
76
"	uniform bool do_highlight;\n"
-
 
77
"	uniform bool do_diffuse;\n"
-
 
78
"	const vec3 light_dir = vec3(0,0,1);\n"
-
 
79
"	\n"
-
 
80
"	void main()\n"
-
 
81
"	{\n"
-
 
82
"		float dot_ln = dot(light_dir, normal);\n"
-
 
83
"		\n"
-
 
84
"		float eig_norm = eig/eig_max;\n"
-
 
85
"		float stripe_signal = 100 * eig_norm;\n"
-
 
86
"		vec4 stripe_col = abs(stripe_signal) < 3.14 ? vec4(1,1,0,0) : vec4(.1,.1,.1,0);\n"
-
 
87
"		\n"
-
 
88
"		gl_FragColor = eig_norm * vec4(-1,0,1,0);\n"
-
 
89
"		if(do_diffuse)   gl_FragColor *= dot_ln;\n"
-
 
90
"		if(do_highlight) gl_FragColor += dot_ln*dot_ln*dot_ln*dot_ln*dot_ln*dot_ln*dot_ln*vec4(.5,.5,.5,0);\n"
-
 
91
"		gl_FragColor += stripe_col * smoothstep(0.8,1.0,cos(stripe_signal));\n"
-
 
92
"	}\n";
47
	
93
	
48
	double voronoi_area(VertexIter v)
94
	double voronoi_area(VertexIter v)
49
	{
95
	{
50
	double area_mixed = 0;
96
	double area_mixed = 0;
51
	//For each triangle T from the 1-ring neighborhood of x
97
	//For each triangle T from the 1-ring neighborhood of x
Line 248... Line 294...
248
 
294
 
249
void Harmonics::init()
295
void Harmonics::init()
250
{
296
{
251
	is_initialized = true;
297
	is_initialized = true;
252
	string shader_path = "/Users/jab/GEL/apps/MeshEdit/";
298
	string shader_path = "/Users/jab/GEL/apps/MeshEdit/";
253
	GLuint vs = create_glsl_shader(GL_VERTEX_SHADER, shader_path, "tri.vert");
299
	GLuint vs = create_glsl_shader(GL_VERTEX_SHADER, vss);
254
	GLuint fs = create_glsl_shader(GL_FRAGMENT_SHADER, shader_path, "tri.frag");
300
	GLuint fs = create_glsl_shader(GL_FRAGMENT_SHADER, fss);
255
	
301
	
256
	// Create the program
302
	// Create the program
257
	prog_P0 = glCreateProgram();
303
	prog_P0 = glCreateProgram();
258
	
304
	
259
	// Attach all shaders
305
	// Attach all shaders