Changeset 386 for trunk/gui/vizservers/nanovis
- Timestamp:
- Mar 29, 2006 8:33:27 AM (18 years ago)
- Location:
- trunk/gui/vizservers/nanovis
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/vizservers/nanovis/config.h
r385 r386 15 15 16 16 17 //#define NV40 //Uncomment if using 6 series card. By default we assume older card the 5xxx series17 #define NV40 //Uncomment if using 6 series card. By default we assume older card the 5xxx series 18 18 //#define XINETD //enable render server 19 19 //#define EVENTLOG //enable event logging -
trunk/gui/vizservers/nanovis/nanoscale/EventPlayer.cpp
r385 r386 94 94 95 95 //start timer 96 struct timeval clock; 97 time((long*) &clock); 98 long start_time = clock.tv_sec*1000 + clock.tv_usec/1000; 96 99 97 100 //send msg … … 117 120 } 118 121 } 122 123 119 124 //end timer 125 time((long*) &clock); 126 long end_time = clock.tv_sec*1000 + clock.tv_usec/1000; 127 128 long time_interval = end_time - start_time; 129 130 fprintf(stderr, "%d ", time_interval); 120 131 } 121 132 -
trunk/gui/vizservers/nanovis/nanovis.cpp
r385 r386 92 92 CGparameter m_tf_one_volume_param; 93 93 CGparameter m_mvi_one_volume_param; 94 CGparameter m_mv_one_volume_param; 94 95 CGparameter m_render_param_one_volume_param; 95 96 … … 508 509 509 510 float *data = new float[4*nx*ny*nz]; 510 float *grad = new float[4*nx*ny*nz];511 511 512 512 double vmin = field.valueMin(); … … 528 528 // scale all values [0-1], -1 => out of bounds 529 529 v = (isnan(v)) ? -1.0 : (v - vmin)/dv; 530 data[ngen] = v; 530 531 531 532 // gradient in x-direction … … 533 534 double oldval = ((ngen/4) % nx == 0) ? 0.0 : data[ngen-4]; 534 535 oldval = (oldval < 0) ? 0.0 : oldval; 535 grad[ngen] = (curval-oldval)/dmin; 536 data[ngen++] = v; 536 data[ngen+1] = (curval-oldval)/dmin; 537 537 538 538 // gradient in y-direction 539 oldval = (ngen- 1-4*nx >= 0) ? data[ngen-1-4*nx] : 0.0;539 oldval = (ngen-4*nx >= 0) ? data[ngen-4*nx] : 0.0; 540 540 oldval = (oldval < 0) ? 0.0 : oldval; 541 grad[ngen] = (curval-oldval)/dmin; 542 data[ngen++] = 0.0; 541 data[ngen+2] = (curval-oldval)/dmin; 543 542 544 543 // gradient in z-direction 545 oldval = (ngen- 2-4*nx*ny >= 0) ? data[ngen-2-4*nx*ny] : 0.0;544 oldval = (ngen-4*nx*ny >= 0) ? data[ngen-4*nx*ny] : 0.0; 546 545 oldval = (oldval < 0) ? 0.0 : oldval; 547 grad[ngen] = (curval-oldval)/dmin; 548 data[ngen++] = 0.0; 549 550 // unused 551 grad[ngen] = 0.0; 552 data[ngen++] = 0.0; 546 data[ngen+3] = (curval-oldval)/dmin; 547 ngen += 4; 553 548 } 554 549 } … … 556 551 load_volume(index, nx, ny, nz, 4, data); 557 552 delete [] data; 558 delete [] grad;559 553 560 554 } else { … … 850 844 cgGLSetTextureParameter(m_tf_one_volume_param, tf[0]->id); 851 845 m_mvi_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "modelViewInv"); 846 m_mv_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "modelView"); 852 847 m_render_param_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "renderParameters"); 853 848 break; … … 1533 1528 1534 1529 cgGLSetStateMatrixParameter(m_mvi_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE); 1530 cgGLSetStateMatrixParameter(m_mv_one_volume_param, CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY); 1535 1531 cgGLSetTextureParameter(m_vol_one_volume_param, volume[volume_index]->id); 1536 1532 cgGLEnableTextureParameter(m_vol_one_volume_param); … … 1541 1537 //if parameter.y == 1 : volume :1 1542 1538 if(volume_index==0) 1543 cgGLSetParameter4f(m_render_param_one_volume_param, n_actual_slices, 0., 0., 0.);1539 cgGLSetParameter4f(m_render_param_one_volume_param, n_actual_slices, 0., live_diffuse, live_specular); 1544 1540 else if(volume_index==1) 1545 cgGLSetParameter4f(m_render_param_one_volume_param, n_actual_slices, 1., 0., 0.);1541 cgGLSetParameter4f(m_render_param_one_volume_param, n_actual_slices, 1., live_diffuse, live_specular); 1546 1542 cgGLBindProgram(m_one_volume_fprog); 1547 1543 cgGLEnableProfile(CG_PROFILE_FP30); … … 2069 2065 init_particles(); 2070 2066 break; 2067 case 'o': 2068 live_specular+=1; 2069 fprintf(stderr, "specular: %f\n", live_specular); 2070 break; 2071 case 'p': 2072 live_specular-=1; 2073 fprintf(stderr, "specular: %f\n", live_specular); 2074 break; 2075 case '[': 2076 live_diffuse+=0.5; 2077 break; 2078 case ']': 2079 live_diffuse-=0.5; 2080 break; 2081 2071 2082 default: 2072 2083 break; -
trunk/gui/vizservers/nanovis/nanovis.h
r383 r386 91 91 float live_obj_z = -2.5; 92 92 93 float live_diffuse = 1.; 94 float live_specular = 3.; 95 93 96 int left_last_x, left_last_y, right_last_x, right_last_y; //last locations mouse events 94 97 bool left_down = false; -
trunk/gui/vizservers/nanovis/shaders/one_volume.cg
r380 r386 10 10 * ====================================================================== 11 11 */ 12 12 13 #include "common.cg" 13 14 … … 19 20 uniform sampler1D tf, 20 21 uniform float4x4 modelViewInv, 22 uniform float4x4 modelView, 21 23 uniform float4 renderParameters) 22 24 { … … 25 27 float4 tex_coord = mul(modelViewInv, IN.TexCoord); 26 28 27 if(renderParameters.y==1){ 28 //1 component 29 float sample = tex3D(volume, tex_coord.xyz);29 if(renderParameters.y==1){ //1 component 30 31 float4 sample = tex3D(volume, tex_coord.xyz); 30 32 31 33 if (sample.x < 0.) { … … 33 35 } 34 36 else{ 35 //shades of red //more opaque 36 OUT.Color = tex1D(tf, sample); 37 OUT.Color.w = 10*OUT.Color.w/renderParameters.x; 37 //lighting parameters 38 float4 worldnormal = float4(sample.yzw, 1); 39 float3 normal = normalize(mul(modelView, worldnormal)).xyz; //eye space normal 40 float3 light_vector = normalize(mul(modelView, float4(0, -1, -2, 1))); //eye space light vector 41 float3 eye_vector = normalize(mul(modelView, float4(IN.EyeVector,1))).xyz; //eye space eye vector 42 float3 half_vector = normalize(+eye_vector+light_vector); //eye half angle vector 38 43 39 //OUT.Color = float4(sample, 0, 0, 7*sample/renderParameters.x); 44 //sample the transfer function texture 45 float4 color = tex1D(tf, sample.x); 46 color.w = 10*color.w/renderParameters.x; 40 47 41 //if(sample<0.6 && sample>0.4){ 42 //OUT.Color = float4(0, 0, 1, 10*sample/renderParameters.x); 43 //} 48 //lighting computation 49 float normal_dot_light = max(dot(normal, light_vector), 0); 50 float normal_dot_half = max(dot(normal, half_vector), 0); 51 52 float ambient = 0.3; 53 float diffuse = normal_dot_light * renderParameters.z; 54 float specular = pow(normal_dot_half, renderParameters.w); 55 56 float lighting = ambient + diffuse + specular; 57 color.xyz = color.xyz * lighting; 58 59 //debug 60 //color.xyz = normal.xyz; //display normals 61 //if(color.z < 0) 62 //color.xyz = float3(1,0,0); 63 64 OUT.Color = color; 44 65 } 45 66 } 46 67 47 68 else if(renderParameters.y==0){ 48 49 69 //3 component 50 70 float3 sample = tex3D(volume, tex_coord.xyz).xyz; 51 52 71 OUT.Color = float4(3*sample, 2*length(sample)/renderParameters.x); 53 72 } 54 73 55 //debug56 //OUT.Color = float4(tex_coord, 1);74 //debug 75 //OUT.Color = float4(tex_coord, 1); 57 76 58 77 return OUT; -
trunk/gui/vizservers/nanovis/shaders/vertex_std.cg
r226 r386 14 14 15 15 v2f main(a2v IN, 16 uniform float4x4 modelViewProjMatrix, 16 uniform float4x4 modelViewProjMatrix, 17 17 uniform float4x4 modelViewInv) 18 18 { … … 25 25 OUT.TexCoord = IN.TexCoord; 26 26 27 //world space eye position 28 OUT.EyeVector = normalize(IN.Position.xyz - float3(0., 0., 0.)); 29 27 30 return OUT; 28 31 }
Note: See TracChangeset
for help on using the changeset viewer.