Changeset 389 for trunk/gui/vizservers
- Timestamp:
- Mar 29, 2006, 3:29:48 PM (19 years ago)
- Location:
- trunk/gui/vizservers/nanovis
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gui/vizservers/nanovis/Makefile
r385 r389 12 12 NANOSCALESRC = ./nanoscale 13 13 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 14 LIB_NANOVIS = -ltcl8.3 -L/opt/render/lib -lGL -lglut -lglui -lGLEW -lCg -lCgGL -pthread -lstdc++ 15 LIB_CLIENT = -L/opt/render/lib -lGL -lglut -pthread -lstdc++ 16 INCLUDES = -I../src2/core -I/opt/render/include -I/autohome/u76/qiaow/Cg/usr/include 17 CFLAG = -g -c -Wall $(INCLUDES) 17 18 18 19 all: nanovis simclient … … 54 55 gcc -g -o client $(OBJ_CLIENT) $(LIB_CLIENT) 55 56 56 simclient: Event.o 57 gcc -g $(NANOSCALESRC)/EventPlayer.cpp $(NANOSCALESRC)/clientlib.cpp -o simclient Event.o $(LIB_CLIENT) 57 simclient: 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 58 60 59 61 Color.o: Color.cpp -
trunk/gui/vizservers/nanovis/config.h
r386 r389 16 16 17 17 #define NV40 //Uncomment if using 6 series card. By default we assume older card the 5xxx series 18 //#define XINETD //enable render server18 #define XINETD //enable render server 19 19 //#define EVENTLOG //enable event logging -
trunk/gui/vizservers/nanovis/nanoscale/EventPlayer.cpp
r386 r389 14 14 */ 15 15 16 #include <GL/freeglut.h>16 //#include <GL/freeglut.h> 17 17 #include <stdlib.h> 18 #include <unistd.h> 18 19 #include <sstream> 19 20 #include <string.h> 20 21 #include <time.h> 22 #include <sys/time.h> 21 23 #include <iostream> 22 24 #include <assert.h> … … 27 29 using namespace std; 28 30 29 Event* event[ 5000];31 Event* event[100]; 30 32 int cur_event = 0; 33 double interval_sum = 0; 31 34 32 35 int width = 512; 33 36 int height = 512; 34 char * screen_buffer = new char[width*height*3];37 char screen_buffer[512*512*3]; 35 38 int screen_size = width * height; 36 39 37 40 int socket_fd; //socekt file descriptor 38 41 39 42 /* 40 43 void display() 41 44 { … … 47 50 return; 48 51 } 52 */ 49 53 50 54 … … 64 68 { 65 69 //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 66 79 Event* cur = event[cur_event]; 67 80 std::stringstream msgstream; … … 95 108 //start timer 96 109 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; 99 112 100 113 //send msg 114 //printf("Writing message %04d to server: '%s'\n", cur_event, msg.c_str()); 101 115 int status = write(socket_fd, msg.c_str(), strlen(msg.c_str())); 102 116 if (status <= 0) { … … 104 118 return; 105 119 } 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 107 130 //receive screen update 108 int len = width * height;109 131 int remain = len; 110 132 char* ptr = screen_buffer; … … 121 143 } 122 144 145 //printf("Read message to server.\n"); 123 146 124 147 //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); 131 159 } 132 160 … … 136 164 FILE* fd = fopen(file, "r"); 137 165 138 //load 5000events139 for(int i=0; i< 5000; i++){166 //load events 167 for(int i=0; i<sizeof(event)/sizeof(event[0]); i++){ 140 168 int type; 141 169 float param[3]; 142 170 fscanf(fd, "%d %f %f %f\n", &type, param, param+1, param+2); 143 171 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]); 145 173 } 146 174 fclose(fd); … … 171 199 assert(init_client(argv[1], argv[2], argv[3])==0); 172 200 201 /* 173 202 glutInit(&argc, argv); 174 203 glutInitWindowSize(width,height); … … 183 212 glClearColor(0.,0.,0.,0.); 184 213 glutMainLoop(); 214 */ 215 while(1) idle(); 185 216 186 217 return 0; -
trunk/gui/vizservers/nanovis/nanovis.cpp
r386 r389 102 102 using namespace std; 103 103 104 static void set_camera( int x_angle, int y_angle, int z_angle){104 static void set_camera(float x_angle, float y_angle, float z_angle){ 105 105 live_rot_x = x_angle; 106 106 live_rot_y = y_angle; … … 1059 1059 1060 1060 void 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); 1063 1063 glReadPixels(0, 0, win_width, win_height, GL_RGB, /*GL_COLOR_ATTACHMENT0_EXT*/ GL_UNSIGNED_BYTE, screen_buffer); 1064 1064 assert(glGetError()==0); … … 1066 1066 1067 1067 void display(); 1068 1069 1070 char rle[512*512*3]; 1071 int rle_size; 1072 1073 short offsets[512*512*3]; 1074 int offsets_size; 1075 1076 void 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 1068 1106 1069 1107 void xinetd_listen(){ … … 1079 1117 char tmp[256]; 1080 1118 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); 1082 1124 data = tmp; 1083 1125 … … 1091 1133 1092 1134 //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 1095 1146 1096 1147 cerr << "server: serve() image sent" << endl; … … 1868 1919 1869 1920 //advect particles 1870 psys->advect();1921 //psys->advect(); 1871 1922 1872 1923 final_fbo_capture(); … … 1925 1976 1926 1977 perf->enable(); 1927 psys->display_vertices();1978 //psys->display_vertices(); 1928 1979 perf->disable(); 1929 1980 //fprintf(stderr, "particle pixels: %d\n", perf->get_pixel_count()); … … 1939 1990 //render volume :1 1940 1991 volume[1]->location =Vector3(0., 0., 0.); 1941 render_volume(1, 256);1992 render_volume(1, 126); 1942 1993 perf->disable(); 1943 1994 //fprintf(stderr, "volume pixels: %d\n", perf->get_pixel_count()); 1995 float cost = perf->get_pixel_count(); 1996 write(3, &cost, sizeof(cost)); 1944 1997 perf->reset(); 1945 1998 … … 1949 2002 display_final_fbo(); 1950 2003 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); 1951 2007 glutSwapBuffers(); 1952 2008 } … … 2145 2201 close(2); 2146 2202 dup2(fileno(xinetd_log), 2); 2203 dup2(2,1); 2147 2204 2148 2205 //flush junk … … 2171 2228 int main(int argc, char** argv) 2172 2229 { 2230 #ifdef XINETD 2231 init_service(); 2232 #endif 2173 2233 2174 2234 glutInit(&argc, argv); … … 2190 2250 2191 2251 initGL(); 2192 #ifdef XINETD2193 init_service();2194 #endif2195 2252 initTcl(); 2196 2253 -
trunk/gui/vizservers/nanovis/nanovis.h
r386 r389 23 23 #include <stdio.h> 24 24 #include <assert.h> 25 #include <tcl.h>26 25 #include <float.h> 27 26 … … 43 42 44 43 #include "config.h" 44 45 #include <tcl.h> 46 #ifndef CONST84 47 # define CONST84 48 #endif 45 49 46 50 … … 115 119 //currently active shader, default renders one volume only 116 120 int cur_shader = 0; 117 -
trunk/gui/vizservers/nanovis/shaders/one_volume.cg
r386 r389 35 35 } 36 36 else{ 37 /* 37 38 //lighting parameters 38 39 float4 worldnormal = float4(sample.yzw, 1); … … 41 42 float3 eye_vector = normalize(mul(modelView, float4(IN.EyeVector,1))).xyz; //eye space eye vector 42 43 float3 half_vector = normalize(+eye_vector+light_vector); //eye half angle vector 43 44 */ 44 45 //sample the transfer function texture 45 46 float4 color = tex1D(tf, sample.x); 46 47 color.w = 10*color.w/renderParameters.x; 47 48 49 if(sample.x > 0.5) 50 color = float4(sample.x, 0, 0, sample.x); 51 52 /* 48 53 //lighting computation 49 54 float normal_dot_light = max(dot(normal, light_vector), 0); … … 56 61 float lighting = ambient + diffuse + specular; 57 62 color.xyz = color.xyz * lighting; 63 */ 58 64 59 65 //debug
Note: See TracChangeset
for help on using the changeset viewer.