Compare commits
	
		
			4 Commits
		
	
	
		
			4ccba24017
			...
			f9aef71a94
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f9aef71a94 | |||
| 5920133571 | |||
| ebbd20a5d1 | |||
| c39a2cea91 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ | |||||||
| image.ppm | image.ppm | ||||||
| 
 | 
 | ||||||
| # binary | # binary | ||||||
| flark | snoopy | ||||||
| 
 | 
 | ||||||
| # CMake | # CMake | ||||||
| # https://github.com/github/gitignore/blob/master/CMake.gitignore | # https://github.com/github/gitignore/blob/master/CMake.gitignore | ||||||
|  | |||||||
| @ -1,11 +1,11 @@ | |||||||
| cmake_minimum_required(VERSION 3.10) | cmake_minimum_required(VERSION 3.10) | ||||||
| 
 | 
 | ||||||
| project(flark) | project(snoopy) | ||||||
| 
 | 
 | ||||||
| file(GLOB flark_src | file(GLOB snoopy_src | ||||||
|     "src/*.h" |     "src/*.h" | ||||||
|     "src/*.cpp" |     "src/*.cpp" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| add_executable(flark ${flark_src}) | add_executable(snoopy ${snoopy_src}) | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @ -1,11 +1,9 @@ | |||||||
| # Flark | # snoopy | ||||||
| 
 | 
 | ||||||
| Ray tracing rendering experiments | Networked fantasy telescope | ||||||
| 
 | 
 | ||||||
| https://raytracing.github.io/ | Originally based on https://raytracing.github.io/ | ||||||
| 
 | 
 | ||||||
| Produced PPM images can be converted to PNG with `imagemagick`: | Original repository at https://github.com/ktyldev/flark | ||||||
| 
 | 
 | ||||||
| ``` | https://www.linuxhowtos.org/C_C++/socket.htm | ||||||
| convert image.ppm image.png |  | ||||||
| ``` |  | ||||||
|  | |||||||
							
								
								
									
										61
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										61
									
								
								src/main.cpp
									
									
									
									
									
								
							| @ -8,6 +8,13 @@ | |||||||
| 
 | 
 | ||||||
| #include <iostream> | #include <iostream> | ||||||
| 
 | 
 | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
|  | #include <unistd.h> | ||||||
|  | #include <sys/types.h> | ||||||
|  | #include <sys/socket.h> | ||||||
|  | #include <netinet/in.h> | ||||||
|  | 
 | ||||||
| const double ASPECT_RATIO = 16.0 / 9.0; | const double ASPECT_RATIO = 16.0 / 9.0; | ||||||
| const int WIDTH = 1920; | const int WIDTH = 1920; | ||||||
| const int HEIGHT = static_cast<int>(WIDTH / ASPECT_RATIO); | const int HEIGHT = static_cast<int>(WIDTH / ASPECT_RATIO); | ||||||
| @ -112,8 +119,62 @@ hittable_list random_scene() | |||||||
|     return world; |     return world; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void error(const char* message) | ||||||
|  | { | ||||||
|  |     perror(message); | ||||||
|  |     exit(1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void wait_for_client() | ||||||
|  | { | ||||||
|  |     int sockfd, newsockfd; | ||||||
|  |     struct sockaddr_in serv_addr, cli_addr; | ||||||
|  |     socklen_t clilen; | ||||||
|  | 
 | ||||||
|  |     // open socket and await connection from client
 | ||||||
|  |     sockfd = socket(AF_INET, SOCK_STREAM, 0); | ||||||
|  |     if (sockfd < 0) | ||||||
|  |     { | ||||||
|  |         error("ERROR creating socket"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     bzero((char*)&serv_addr, sizeof(serv_addr)); | ||||||
|  | 
 | ||||||
|  |     // we successfully created the socket, configure it for binding
 | ||||||
|  |     serv_addr.sin_family = AF_INET; | ||||||
|  |     serv_addr.sin_addr.s_addr = INADDR_ANY; | ||||||
|  |     serv_addr.sin_port = htons(64999);  // convert number from host to network byte order
 | ||||||
|  | 
 | ||||||
|  |     // bind the socket
 | ||||||
|  |     if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) | ||||||
|  |     { | ||||||
|  |         error("ERROR binding socket"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // successfully bound socket, start listening for connections
 | ||||||
|  |     listen(sockfd, 5); | ||||||
|  |     clilen = sizeof(cli_addr); | ||||||
|  | 
 | ||||||
|  |     newsockfd = accept(sockfd, (struct sockaddr*)&cli_addr, &clilen); | ||||||
|  |     if (newsockfd < 0) | ||||||
|  |     { | ||||||
|  |         error("ERROR accepting client"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     printf("got a connection!\n"); | ||||||
|  | 
 | ||||||
|  |     // close sockets we opened
 | ||||||
|  |     close(newsockfd); | ||||||
|  |     close(sockfd); | ||||||
|  | 
 | ||||||
|  |     // once connection is acquired, exit
 | ||||||
|  |     exit(0); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int main() | int main() | ||||||
| { | { | ||||||
|  |     wait_for_client(); | ||||||
|  | 
 | ||||||
|     std::cout << "P3\n" << WIDTH << ' ' << HEIGHT << "\n255\n"; |     std::cout << "P3\n" << WIDTH << ' ' << HEIGHT << "\n255\n"; | ||||||
| 
 | 
 | ||||||
|     hittable_list world = random_scene(); |     hittable_list world = random_scene(); | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								telescope.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								telescope.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | fantasy telescope idea | ||||||
|  | 
 | ||||||
|  | use rti1w as a base | ||||||
|  | 
 | ||||||
|  | * [ ] move rendering out of main.cpp | ||||||
|  | * [x] server waits for connection | ||||||
|  | * [x] client establishes connection | ||||||
|  | * [ ] client sends receiving port to server | ||||||
|  | * [ ] client application sends command to send image | ||||||
|  | * [ ] server receives imaging command | ||||||
|  | * [ ] server renders image | ||||||
|  | * [ ] server sends image data stream to client | ||||||
|  | * [ ] client application receives image | ||||||
|  | * [ ] client requests resend of lost packets | ||||||
|  | * [ ] client displays image | ||||||
|  | * [ ] client saves image to file | ||||||
|  | * [ ] server sends telemetry to client (what telemetry?) | ||||||
|  | * [ ] server compresses image before sending to client | ||||||
|  | * [ ] client specifies image parameters | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user