Changeset 389 for trunk/gui/vizservers


Ignore:
Timestamp:
Mar 29, 2006, 3:29:48 PM (19 years ago)
Author:
qiaow
Message:

Added run length encoding , testing code.

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

Legend:

Unmodified
Added
Removed
  • trunk/gui/vizservers/nanovis/Makefile

    r385 r389  
    1212NANOSCALESRC = ./nanoscale
    1313
    14 LIB_NANOVIS = -ltcl8.4 -lGL -lglut -lglui -lGLEW -lCg -lCgGL -pthread -lstdc++
    15 LIB_CLIENT = -lGL -lglut -pthread -lstdc++
    16 CFLAG = -g -c -Wall -I../src2/core
     14LIB_NANOVIS = -ltcl8.3 -L/opt/render/lib -lGL -lglut -lglui -lGLEW -lCg -lCgGL -pthread -lstdc++
     15LIB_CLIENT = -L/opt/render/lib -lGL -lglut -pthread -lstdc++
     16INCLUDES = -I../src2/core -I/opt/render/include -I/autohome/u76/qiaow/Cg/usr/include
     17CFLAG = -g -c -Wall $(INCLUDES)
    1718
    1819all: nanovis simclient
     
    5455        gcc -g -o client $(OBJ_CLIENT) $(LIB_CLIENT)
    5556
    56 simclient: Event.o
    57         gcc -g $(NANOSCALESRC)/EventPlayer.cpp $(NANOSCALESRC)/clientlib.cpp -o simclient Event.o $(LIB_CLIENT)
     57simclient: Event.o nanoscale/EventPlayer.cpp
     58        #gcc -g $(INCLUDES) $(NANOSCALESRC)/EventPlayer.cpp $(NANOSCALESRC)/clientlib.cpp -o simclient Event.o $(LIB_CLIENT)
     59        g++ -g $(INCLUDES) $(NANOSCALESRC)/EventPlayer.cpp $(NANOSCALESRC)/clientlib.cpp -o simclient Event.o
    5860
    5961Color.o: Color.cpp
  • trunk/gui/vizservers/nanovis/config.h

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

    r386 r389  
    1414 */
    1515
    16 #include <GL/freeglut.h>
     16//#include <GL/freeglut.h>
    1717#include <stdlib.h>
     18#include <unistd.h>
    1819#include <sstream>
    1920#include <string.h>
    2021#include <time.h>
     22#include <sys/time.h>
    2123#include <iostream>
    2224#include <assert.h>
     
    2729using namespace std;
    2830
    29 Event* event[5000];
     31Event* event[100];
    3032int cur_event = 0;
     33double interval_sum = 0;
    3134
    3235int width = 512;
    3336int height = 512;
    34 char* screen_buffer = new char[width*height*3];
     37char screen_buffer[512*512*3];
    3538int screen_size = width * height;
    3639
    3740int socket_fd;  //socekt file descriptor
    3841
    39 
     42/*
    4043void display()
    4144{
     
    4750   return;
    4851}
     52*/
    4953
    5054
     
    6468{
    6569  //send requests
     70
     71  if (cur_event >= sizeof(event)/sizeof(event[0])) {
     72    float ave = interval_sum / (cur_event-1);
     73    float fps = 1/ave;
     74    printf("Average frame time = %.6f\n", ave);
     75    printf("Frames per second  = %f\n", fps);
     76    exit(0);
     77  }
     78
    6679  Event* cur = event[cur_event];
    6780  std::stringstream msgstream;
     
    95108  //start timer
    96109  struct timeval clock;
    97   time((long*) &clock);
    98   long start_time = clock.tv_sec*1000 + clock.tv_usec/1000;
     110  gettimeofday(&clock, NULL);
     111  double start_time = clock.tv_sec + clock.tv_usec/1000000.0;
    99112
    100113  //send msg
     114  //printf("Writing message %04d to server: '%s'\n", cur_event, msg.c_str());
    101115  int status = write(socket_fd, msg.c_str(), strlen(msg.c_str()));
    102116  if (status <= 0) {
     
    104118     return;
    105119  }
    106  
     120
     121#if DO_RLE
     122  int sizes[2];
     123  status = read(socket_fd, &sizes, sizeof(sizes));
     124  printf("Reading %d,%d bytes\n", sizes[0], sizes[1]);
     125  int len = sizes[0] + sizes[1];
     126#else
     127  int len = width * height * 3;
     128#endif
     129
    107130  //receive screen update
    108   int len = width * height;
    109131  int remain = len;
    110132  char* ptr = screen_buffer;
     
    121143  }
    122144
     145  //printf("Read message to server.\n");
    123146
    124147  //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);
     148  gettimeofday(&clock, NULL);
     149  double end_time = clock.tv_sec + clock.tv_usec/1000000.0;
     150
     151  double time_interval = end_time - start_time;
     152
     153  if (cur_event != 0) {
     154    interval_sum += time_interval;
     155  }
     156  cur_event++;
     157
     158  fprintf(stderr, "% 6d %.6f\n", len, time_interval);
    131159}
    132160
     
    136164  FILE* fd = fopen(file, "r");
    137165
    138   //load 5000 events
    139   for(int i=0; i<5000; i++){
     166  //load events
     167  for(int i=0; i<sizeof(event)/sizeof(event[0]); i++){
    140168    int type;
    141169    float param[3];
    142170    fscanf(fd, "%d %f %f %f\n", &type, param, param+1, param+2);
    143171    event[i] = new Event(type, param, 0);
    144     fprintf(stderr, "%d %f %f %f\n", type, param[0], param[1], param[2]);
     172    //fprintf(stderr, "%d %f %f %f\n", type, param[0], param[1], param[2]);
    145173  }
    146174  fclose(fd);
     
    171199    assert(init_client(argv[1], argv[2], argv[3])==0);
    172200
     201/*
    173202    glutInit(&argc, argv);
    174203    glutInitWindowSize(width,height);
     
    183212    glClearColor(0.,0.,0.,0.);
    184213    glutMainLoop();
     214*/
     215    while(1) idle();
    185216
    186217    return 0;
  • trunk/gui/vizservers/nanovis/nanovis.cpp

    r386 r389  
    102102using namespace std;
    103103
    104 static void set_camera(int x_angle, int y_angle, int z_angle){
     104static void set_camera(float x_angle, float y_angle, float z_angle){
    105105  live_rot_x = x_angle;
    106106  live_rot_y = y_angle;
     
    10591059
    10601060void read_screen(){
    1061   glBindTexture(GL_TEXTURE_2D, 0);
    1062   glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
     1061  //glBindTexture(GL_TEXTURE_2D, 0);
     1062  //glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
    10631063  glReadPixels(0, 0, win_width, win_height, GL_RGB, /*GL_COLOR_ATTACHMENT0_EXT*/ GL_UNSIGNED_BYTE, screen_buffer);
    10641064  assert(glGetError()==0);
     
    10661066
    10671067void display();
     1068
     1069
     1070char rle[512*512*3];
     1071int rle_size;
     1072
     1073short offsets[512*512*3];
     1074int offsets_size;
     1075
     1076void do_rle(){
     1077  int len = win_width*win_height*3;
     1078  rle_size = 0;
     1079  offsets_size = 0;
     1080
     1081  int i=0;
     1082  while(i<len){
     1083    if (screen_buffer[i] == 0) {
     1084      int pos = i+1;
     1085      while ( (pos<len) && (screen_buffer[pos] == 0)) {
     1086        pos++;
     1087      }
     1088      offsets[offsets_size++] = -(pos - i);
     1089      i = pos;
     1090    }
     1091
     1092    else {
     1093      int pos;
     1094      for (pos = i; (pos<len) && (screen_buffer[pos] != 0); pos++) {
     1095        rle[rle_size++] = screen_buffer[pos];
     1096      }
     1097      offsets[offsets_size++] = (pos - i);
     1098      i = pos;
     1099    }
     1100
     1101  }
     1102}
     1103
     1104
     1105
    10681106
    10691107void xinetd_listen(){
     
    10791117    char tmp[256];
    10801118    bzero(tmp, 256);
    1081     fprintf(stderr, "read %d\n", read(fileno(stdin), tmp, 256));
     1119    int status = read(0, tmp, 256);
     1120    if (status <= 0) {
     1121      exit(0);
     1122    }
     1123    fprintf(stderr, "read %d\n", status);
    10821124    data = tmp;
    10831125
     
    10911133
    10921134    //read the image
    1093     read_screen();
    1094     writen(fileno(stdout), screen_buffer, 3*win_width*win_height);      //unsigned byte
     1135    //read_screen();
     1136#if DO_RLE
     1137    do_rle();
     1138    int sizes[2] = {  offsets_size*sizeof(offsets[0]), rle_size };
     1139    fprintf(stderr, "Writing %d,%d\n", sizes[0], sizes[1]); fflush(stderr);
     1140    write(0, &sizes, sizeof(sizes));
     1141    write(0, offsets, offsets_size*sizeof(offsets[0]));
     1142    write(0, rle, rle_size);    //unsigned byte
     1143#else
     1144    write(0, screen_buffer, win_width * win_height * 3);
     1145#endif
    10951146
    10961147    cerr << "server: serve() image sent" << endl;
     
    18681919   
    18691920   //advect particles
    1870    psys->advect();
     1921   //psys->advect();
    18711922
    18721923   final_fbo_capture();
     
    19251976
    19261977   perf->enable();
    1927      psys->display_vertices();
     1978     //psys->display_vertices();
    19281979   perf->disable();
    19291980   //fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count());
     
    19391990     //render volume :1
    19401991     volume[1]->location =Vector3(0., 0., 0.);
    1941      render_volume(1, 256);
     1992     render_volume(1, 126);
    19421993   perf->disable();
    19431994   //fprintf(stderr, "volume pixels: %d\n", perf->get_pixel_count());
     1995   float cost  = perf->get_pixel_count();
     1996   write(3, &cost, sizeof(cost));
    19441997   perf->reset();
    19451998
     
    19492002   display_final_fbo();
    19502003
     2004   read_screen();
     2005    glClear(GL_COLOR_BUFFER_BIT);
     2006    glDrawPixels(win_width, win_height, GL_RGB, /*GL_COLOR_ATTACHMENT0_EXT*/ GL_UNSIGNED_BYTE, screen_buffer);
    19512007   glutSwapBuffers();
    19522008}
     
    21452201  close(2);
    21462202  dup2(fileno(xinetd_log), 2);
     2203  dup2(2,1);
    21472204
    21482205  //flush junk
     
    21712228int main(int argc, char** argv)
    21722229{
     2230#ifdef XINETD
     2231   init_service();
     2232#endif
    21732233
    21742234   glutInit(&argc, argv);
     
    21902250
    21912251   initGL();
    2192 #ifdef XINETD
    2193    init_service();
    2194 #endif
    21952252   initTcl();
    21962253
  • trunk/gui/vizservers/nanovis/nanovis.h

    r386 r389  
    2323#include <stdio.h>
    2424#include <assert.h>
    25 #include <tcl.h>
    2625#include <float.h>
    2726
     
    4342
    4443#include "config.h"
     44
     45#include <tcl.h>
     46#ifndef CONST84
     47# define CONST84
     48#endif
    4549
    4650
     
    115119//currently active shader, default renders one volume only
    116120int cur_shader = 0;
    117 
  • trunk/gui/vizservers/nanovis/shaders/one_volume.cg

    r386 r389  
    3535    }
    3636    else{
     37/*
    3738      //lighting parameters
    3839      float4 worldnormal = float4(sample.yzw, 1);
     
    4142      float3 eye_vector = normalize(mul(modelView, float4(IN.EyeVector,1))).xyz;        //eye space eye vector
    4243      float3 half_vector = normalize(+eye_vector+light_vector);          //eye half angle vector
    43 
     44*/
    4445      //sample the transfer function texture
    4546      float4 color = tex1D(tf, sample.x);
    4647      color.w = 10*color.w/renderParameters.x;
    4748
     49      if(sample.x > 0.5)
     50        color = float4(sample.x, 0, 0, sample.x);
     51       
     52/*
    4853      //lighting computation
    4954      float normal_dot_light = max(dot(normal, light_vector), 0);
     
    5661      float lighting = ambient + diffuse + specular;
    5762      color.xyz = color.xyz * lighting;
     63*/
    5864
    5965      //debug
Note: See TracChangeset for help on using the changeset viewer.