Subversion Repositories gelsvn

Rev

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

Rev 386 Rev 388
Line 172... Line 172...
172
			projy[es] += v->pos[1] * Q[es][v->touched];
172
			projy[es] += v->pos[1] * Q[es][v->touched];
173
			projz[es] += v->pos[2] * Q[es][v->touched];
173
			projz[es] += v->pos[2] * Q[es][v->touched];
174
			max_eig_values[es] = max(max_eig_values[es], static_cast<float>(abs(Q[es][v->touched])));
174
			max_eig_values[es] = max(max_eig_values[es], static_cast<float>(abs(Q[es][v->touched])));
175
		}
175
		}
176
	}
176
	}
-
 
177
	
-
 
178
	reconstruct(mani, MAX_E);
177
}
179
}
178
 
180
 
179
void add_frequency(Manifold& mani, int es, float scale)
181
void add_frequency(Manifold& mani, int es, float scale)
180
{
182
{
181
	if(es<MAX_E)
183
	if(es<MAX_E)
Line 207... Line 209...
207
	for(int es=E0;es<=E1;++es)
209
	for(int es=E0;es<=E1;++es)
208
		add_frequency(mani,es, scale);
210
		add_frequency(mani,es, scale);
209
}
211
}
210
 
212
 
211
 
213
 
-
 
214
template<typename T>
-
 
215
T& get_CVar_ref(const std::string& s)
-
 
216
{
-
 
217
	return *reinterpret_cast<T*> (GetCVarData(s));
-
 
218
}
212
 
219
 
213
void draw_eigenvalues(Manifold& m)
220
void draw_eigenvalues(Manifold& m)
214
{
221
{
215
	static CVar<int> display_eigen("display.eigenvalue",0);
222
	int& display_eigen = get_CVar_ref<int>("display.harmonics.eigenvalue");
216
	static CVar<int> display_eigen2("display.eigenvalue2",0);
223
	int& display_eigen2 = get_CVar_ref<int>("display.harmonics.eigenvalue");
217
	static CVar<int> do_highlight("display.highlight",1);
224
	int& do_diffuse = get_CVar_ref<int>("display.harmonics.diffuse");
218
	static CVar<int> do_diffuse("display.diffuse",1);
225
	int& do_highlight = get_CVar_ref<int>("display.harmonics.highlight");
-
 
226
 
219
 
227
 
220
	glUseProgram(prog_P0);
228
	glUseProgram(prog_P0);
221
	glUniform1f(glGetUniformLocation(prog_P0,"eig_max"),max_eig_values[display_eigen]);
229
	glUniform1f(glGetUniformLocation(prog_P0,"eig_max"),max_eig_values[display_eigen]);
222
	glUniform1f(glGetUniformLocation(prog_P0,"eig_max2"),max_eig_values[display_eigen2]);
230
	glUniform1f(glGetUniformLocation(prog_P0,"eig_max2"),max_eig_values[display_eigen2]);
223
	glUniform1i(glGetUniformLocation(prog_P0,"do_diffuse"),do_diffuse);
231
	glUniform1i(glGetUniformLocation(prog_P0,"do_diffuse"),do_diffuse);
Line 243... Line 251...
243
	}
251
	}
244
	glFrontFace(GL_CCW);
252
	glFrontFace(GL_CCW);
245
	glUseProgram(0);
253
	glUseProgram(0);
246
}
254
}
247
 
255
 
248
void init_harmonics(Manifold& mani)
256
void init_harmonics()
249
{
257
{
250
	string shader_path = "/Users/jab/GEL/apps/MeshEdit/";
258
	string shader_path = "/Users/jab/GEL/apps/MeshEdit/";
251
	GLuint vs = create_glsl_shader(GL_VERTEX_SHADER, shader_path, "tri.vert");
259
	GLuint vs = create_glsl_shader(GL_VERTEX_SHADER, shader_path, "tri.vert");
252
	GLuint fs = create_glsl_shader(GL_FRAGMENT_SHADER, shader_path, "tri.frag");
260
	GLuint fs = create_glsl_shader(GL_FRAGMENT_SHADER, shader_path, "tri.frag");
253
	
261
	
Line 262... Line 270...
262
	glLinkProgram(prog_P0);
270
	glLinkProgram(prog_P0);
263
	print_glsl_program_log(prog_P0);
271
	print_glsl_program_log(prog_P0);
264
	
272
	
265
	// Install program object as part of current state
273
	// Install program object as part of current state
266
	glUseProgram(prog_P0);
274
	glUseProgram(prog_P0);
267
 
275
	
268
	analyze_mesh(mani);
276
	static CVar<int> display_eigen("display.harmonics.eigenvalue",0);
-
 
277
	static CVar<int> display_eigen2("display.harmonics.eigenvalue2",0);
-
 
278
	static CVar<int> do_highlight("display.harmonics.highlight",1);
269
	reconstruct(mani, MAX_E);
279
	static CVar<int> do_diffuse("display.harmonics.diffuse",1);
270
 
280
 
271
}
281
}