Initial commit
This commit is contained in:
commit
7e9c50b764
1
.clang-format
Normal file
1
.clang-format
Normal file
@ -0,0 +1 @@
|
|||||||
|
BasedOnStyle: LLVM
|
||||||
10
.gitignore
vendored
Normal file
10
.gitignore
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
build/
|
||||||
|
|
||||||
|
*.ppm
|
||||||
|
|
||||||
|
.clangd/
|
||||||
|
.cache/
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
compile_flags.txt
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Ray tracing in one week-end
|
||||||
|
|
||||||
|
C implementation of the [*Ray tracing in one week-end*](https://raytracing.github.io/) series by Peter Shirley.
|
||||||
13
build.sh
Executable file
13
build.sh
Executable file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CC=${CC:-"gcc"}
|
||||||
|
CFLAGS=${CFLAGS:-"-Wall -Wextra -std=c18 -g"}
|
||||||
|
LDFLAGS=${LDFLAGS:-""}
|
||||||
|
MAIN_FILE=${MAIN_FILE:-"main.c"}
|
||||||
|
|
||||||
|
# Write out compile_flags.txt for clangd
|
||||||
|
echo "${CFLAGS}" | tr ' ' '\n' > compile_flags.txt
|
||||||
|
|
||||||
|
mkdir -p build
|
||||||
|
|
||||||
|
${CC} ${CFLAGS} ${MAIN_FILE} -o build/raytracer ${LDFLAGS}
|
||||||
24
main.c
Normal file
24
main.c
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
const int image_width = 256;
|
||||||
|
const int image_height = 256;
|
||||||
|
|
||||||
|
printf("P3\n%u %u\n255\n", image_width, image_height);
|
||||||
|
|
||||||
|
for(int j = image_height - 1; j >= 0; --j) {
|
||||||
|
for(int i = 0; i < image_width; ++i) {
|
||||||
|
double r = (double)(i) / (image_width - 1);
|
||||||
|
double g = (double)(j) / (image_height - 1);
|
||||||
|
double b = 0.25;
|
||||||
|
|
||||||
|
int ir = (int)(255.999 * r);
|
||||||
|
int ig = (int)(255.999 * g);
|
||||||
|
int ib = (int)(255.999 * b);
|
||||||
|
|
||||||
|
printf("%d %d %d\n", ir, ig, ib);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user