Ignore:
Timestamp:
Mar 29, 2006 8:33:27 AM (18 years ago)
Author:
qiaow
Message:

Added phone shading in one_volume.cg

Location:
trunk/gui/vizservers/nanovis
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/config.h

    r385 r386  
    1515
    1616
    17 //#define NV40    //Uncomment if using 6 series card. By default we assume older card the 5xxx series
     17#define NV40      //Uncomment if using 6 series card. By default we assume older card the 5xxx series
    1818//#define XINETD  //enable render server
    1919//#define EVENTLOG  //enable event logging
  • trunk/gui/vizservers/nanovis/nanoscale/EventPlayer.cpp

    r385 r386  
    9494
    9595  //start timer
     96  struct timeval clock;
     97  time((long*) &clock);
     98  long start_time = clock.tv_sec*1000 + clock.tv_usec/1000;
    9699
    97100  //send msg
     
    117120    }
    118121  }
     122
     123
    119124  //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);
    120131}
    121132
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r385 r386  
    9292CGparameter m_tf_one_volume_param;
    9393CGparameter m_mvi_one_volume_param;
     94CGparameter m_mv_one_volume_param;
    9495CGparameter m_render_param_one_volume_param;
    9596
     
    508509
    509510            float *data = new float[4*nx*ny*nz];
    510             float *grad = new float[4*nx*ny*nz];
    511511
    512512            double vmin = field.valueMin();
     
    528528                        // scale all values [0-1], -1 => out of bounds
    529529                        v = (isnan(v)) ? -1.0 : (v - vmin)/dv;
     530                        data[ngen] = v;
    530531
    531532                        // gradient in x-direction
     
    533534                        double oldval = ((ngen/4) % nx == 0) ? 0.0 : data[ngen-4];
    534535                        oldval = (oldval < 0) ? 0.0 : oldval;
    535                         grad[ngen] = (curval-oldval)/dmin;
    536                         data[ngen++] = v;
     536                        data[ngen+1] = (curval-oldval)/dmin;
    537537
    538538                        // 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;
    540540                        oldval = (oldval < 0) ? 0.0 : oldval;
    541                         grad[ngen] = (curval-oldval)/dmin;
    542                         data[ngen++] = 0.0;
     541                        data[ngen+2] = (curval-oldval)/dmin;
    543542
    544543                        // 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;
    546545                        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;
    553548                    }
    554549                }
     
    556551            load_volume(index, nx, ny, nz, 4, data);
    557552            delete [] data;
    558             delete [] grad;
    559553
    560554        } else {
     
    850844      cgGLSetTextureParameter(m_tf_one_volume_param, tf[0]->id);
    851845      m_mvi_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "modelViewInv");
     846      m_mv_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "modelView");
    852847      m_render_param_one_volume_param = cgGetNamedParameter(m_one_volume_fprog, "renderParameters");
    853848      break;
     
    15331528
    15341529  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);
    15351531  cgGLSetTextureParameter(m_vol_one_volume_param, volume[volume_index]->id);
    15361532  cgGLEnableTextureParameter(m_vol_one_volume_param);
     
    15411537  //if parameter.y == 1 : volume :1
    15421538  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);
    15441540  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);
    15461542  cgGLBindProgram(m_one_volume_fprog);
    15471543  cgGLEnableProfile(CG_PROFILE_FP30);
     
    20692065                init_particles();
    20702066                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
    20712082        default:
    20722083                break;
  • trunk/gui/vizservers/nanovis/nanovis.h

    r383 r386  
    9191float live_obj_z = -2.5;
    9292
     93float live_diffuse = 1.;
     94float live_specular = 3.;
     95
    9396int left_last_x, left_last_y, right_last_x, right_last_y;       //last locations mouse events
    9497bool left_down = false;                                         
  • trunk/gui/vizservers/nanovis/shaders/one_volume.cg

    r380 r386  
    1010 * ======================================================================
    1111 */
     12
    1213#include "common.cg"
    1314
     
    1920                uniform sampler1D tf,
    2021                uniform float4x4 modelViewInv,
     22                uniform float4x4 modelView,
    2123                uniform float4 renderParameters)
    2224{
     
    2527  float4 tex_coord = mul(modelViewInv, IN.TexCoord);
    2628       
    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);
    3032
    3133    if (sample.x < 0.) {
     
    3335    }
    3436    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
    3843
    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;
    4047
    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;
    4465    }
    4566  }
    4667
    4768  else if(renderParameters.y==0){
    48 
    4969    //3 component
    5070    float3 sample = tex3D(volume, tex_coord.xyz).xyz;
    51    
    5271    OUT.Color = float4(3*sample, 2*length(sample)/renderParameters.x);
    5372  }
    5473
    55 //debug
    56 //OUT.Color = float4(tex_coord, 1);
     74  //debug
     75  //OUT.Color = float4(tex_coord, 1);
    5776
    5877  return OUT;
  • trunk/gui/vizservers/nanovis/shaders/vertex_std.cg

    r226 r386  
    1414 
    1515v2f main(a2v IN,
    16                 uniform float4x4 modelViewProjMatrix,
     16                uniform float4x4 modelViewProjMatrix, 
    1717                uniform float4x4 modelViewInv)
    1818{
     
    2525        OUT.TexCoord = IN.TexCoord;
    2626
     27        //world space eye position
     28        OUT.EyeVector = normalize(IN.Position.xyz - float3(0., 0., 0.));
     29
    2730        return OUT;
    2831}
Note: See TracChangeset for help on using the changeset viewer.