Implement texture

This commit is contained in:
CJSatnarine
2024-07-08 19:02:29 -04:00
parent e1e2d4ac2a
commit 18b2acb1fe
22 changed files with 360386 additions and 90076 deletions

View File

@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.0)
project(Raytracer VERSION 0.1.0 LANGUAGES C CXX) project(Raytracer VERSION 0.1.0 LANGUAGES C CXX)
add_executable(Raytracer add_executable(Raytracer
ImageGenerator.cpp main.cpp
aabb.h aabb.h
bvh.h bvh.h
camera.h camera.h
@@ -14,6 +14,7 @@ add_executable(Raytracer
ray.h ray.h
rayTracer.h rayTracer.h
sphere.h sphere.h
texture.h
vec3.h vec3.h
) )

View File

@@ -39,7 +39,7 @@
{ {
"directoryIndex" : 0, "directoryIndex" : 0,
"id" : "Raytracer::@6890427a1f51a3e7e1df", "id" : "Raytracer::@6890427a1f51a3e7e1df",
"jsonFile" : "target-Raytracer-Debug-53e51d7b7c539400eaa2.json", "jsonFile" : "target-Raytracer-Debug-c20492cef9da68491c1d.json",
"name" : "Raytracer", "name" : "Raytracer",
"projectIndex" : 0 "projectIndex" : 0
} }

View File

@@ -26,7 +26,7 @@
"objects" : "objects" :
[ [
{ {
"jsonFile" : "codemodel-v2-f57fe542ed13663d4779.json", "jsonFile" : "codemodel-v2-f6c7b9244f32065c2aec.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {
@@ -99,7 +99,7 @@
} }
}, },
{ {
"jsonFile" : "codemodel-v2-f57fe542ed13663d4779.json", "jsonFile" : "codemodel-v2-f6c7b9244f32065c2aec.json",
"kind" : "codemodel", "kind" : "codemodel",
"version" : "version" :
{ {

View File

@@ -92,7 +92,8 @@
9, 9,
10, 10,
11, 11,
12 12,
13
] ]
} }
], ],
@@ -101,7 +102,7 @@
{ {
"backtrace" : 1, "backtrace" : 1,
"compileGroupIndex" : 0, "compileGroupIndex" : 0,
"path" : "ImageGenerator.cpp", "path" : "main.cpp",
"sourceGroupIndex" : 0 "sourceGroupIndex" : 0
}, },
{ {
@@ -159,6 +160,11 @@
"path" : "sphere.h", "path" : "sphere.h",
"sourceGroupIndex" : 1 "sourceGroupIndex" : 1
}, },
{
"backtrace" : 1,
"path" : "texture.h",
"sourceGroupIndex" : 1
},
{ {
"backtrace" : 1, "backtrace" : 1,
"path" : "vec3.h", "path" : "vec3.h",

View File

@@ -8,7 +8,7 @@ set(CMAKE_DEPENDS_LANGUAGES
# The set of dependency files which are needed: # The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES set(CMAKE_DEPENDS_DEPENDENCY_FILES
"/home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp" "CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o" "gcc" "CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o.d" "/home/cjsatnarine/Code/Raytracer/main.cpp" "CMakeFiles/Raytracer.dir/main.cpp.o" "gcc" "CMakeFiles/Raytracer.dir/main.cpp.o.d"
) )
# Targets to which this target links which contain Fortran sources. # Targets to which this target links which contain Fortran sources.

View File

@@ -209,4 +209,5 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: \
/usr/include/c++/13/bits/vector.tcc \ /usr/include/c++/13/bits/vector.tcc \
/home/cjsatnarine/Code/Raytracer/camera.h \ /home/cjsatnarine/Code/Raytracer/camera.h \
/home/cjsatnarine/Code/Raytracer/material.h \ /home/cjsatnarine/Code/Raytracer/material.h \
/home/cjsatnarine/Code/Raytracer/texture.h \
/home/cjsatnarine/Code/Raytracer/sphere.h /home/cjsatnarine/Code/Raytracer/sphere.h

View File

@@ -69,28 +69,28 @@ include CMakeFiles/Raytracer.dir/progress.make
# Include the compile flags for this target's objects. # Include the compile flags for this target's objects.
include CMakeFiles/Raytracer.dir/flags.make include CMakeFiles/Raytracer.dir/flags.make
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: CMakeFiles/Raytracer.dir/flags.make CMakeFiles/Raytracer.dir/main.cpp.o: CMakeFiles/Raytracer.dir/flags.make
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp CMakeFiles/Raytracer.dir/main.cpp.o: /home/cjsatnarine/Code/Raytracer/main.cpp
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: CMakeFiles/Raytracer.dir/compiler_depend.ts CMakeFiles/Raytracer.dir/main.cpp.o: CMakeFiles/Raytracer.dir/compiler_depend.ts
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/cjsatnarine/Code/Raytracer/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/home/cjsatnarine/Code/Raytracer/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object CMakeFiles/Raytracer.dir/main.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o -MF CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o.d -o CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o -c /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/Raytracer.dir/main.cpp.o -MF CMakeFiles/Raytracer.dir/main.cpp.o.d -o CMakeFiles/Raytracer.dir/main.cpp.o -c /home/cjsatnarine/Code/Raytracer/main.cpp
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.i: cmake_force CMakeFiles/Raytracer.dir/main.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/Raytracer.dir/ImageGenerator.cpp.i" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/Raytracer.dir/main.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp > CMakeFiles/Raytracer.dir/ImageGenerator.cpp.i /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /home/cjsatnarine/Code/Raytracer/main.cpp > CMakeFiles/Raytracer.dir/main.cpp.i
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.s: cmake_force CMakeFiles/Raytracer.dir/main.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/Raytracer.dir/ImageGenerator.cpp.s" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/Raytracer.dir/main.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp -o CMakeFiles/Raytracer.dir/ImageGenerator.cpp.s /usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /home/cjsatnarine/Code/Raytracer/main.cpp -o CMakeFiles/Raytracer.dir/main.cpp.s
# Object files for target Raytracer # Object files for target Raytracer
Raytracer_OBJECTS = \ Raytracer_OBJECTS = \
"CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o" "CMakeFiles/Raytracer.dir/main.cpp.o"
# External object files for target Raytracer # External object files for target Raytracer
Raytracer_EXTERNAL_OBJECTS = Raytracer_EXTERNAL_OBJECTS =
Raytracer: CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o Raytracer: CMakeFiles/Raytracer.dir/main.cpp.o
Raytracer: CMakeFiles/Raytracer.dir/build.make Raytracer: CMakeFiles/Raytracer.dir/build.make
Raytracer: CMakeFiles/Raytracer.dir/link.txt Raytracer: CMakeFiles/Raytracer.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/cjsatnarine/Code/Raytracer/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable Raytracer" @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/home/cjsatnarine/Code/Raytracer/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Linking CXX executable Raytracer"

View File

@@ -1,6 +1,6 @@
file(REMOVE_RECURSE file(REMOVE_RECURSE
"CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o" "CMakeFiles/Raytracer.dir/main.cpp.o"
"CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o.d" "CMakeFiles/Raytracer.dir/main.cpp.o.d"
"Raytracer" "Raytracer"
"Raytracer.pdb" "Raytracer.pdb"
) )

View File

@@ -1,8 +1,8 @@
# CMAKE generated file: DO NOT EDIT! # CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.28 # Generated by "Unix Makefiles" Generator, CMake Version 3.28
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o CMakeFiles/Raytracer.dir/main.cpp.o
/home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp /home/cjsatnarine/Code/Raytracer/main.cpp
/home/cjsatnarine/Code/Raytracer/aabb.h /home/cjsatnarine/Code/Raytracer/aabb.h
/home/cjsatnarine/Code/Raytracer/bvh.h /home/cjsatnarine/Code/Raytracer/bvh.h
/home/cjsatnarine/Code/Raytracer/camera.h /home/cjsatnarine/Code/Raytracer/camera.h
@@ -14,6 +14,7 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o
/home/cjsatnarine/Code/Raytracer/ray.h /home/cjsatnarine/Code/Raytracer/ray.h
/home/cjsatnarine/Code/Raytracer/rayTracer.h /home/cjsatnarine/Code/Raytracer/rayTracer.h
/home/cjsatnarine/Code/Raytracer/sphere.h /home/cjsatnarine/Code/Raytracer/sphere.h
/home/cjsatnarine/Code/Raytracer/texture.h
/home/cjsatnarine/Code/Raytracer/vec3.h /home/cjsatnarine/Code/Raytracer/vec3.h
/usr/include/alloca.h /usr/include/alloca.h
/usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno-base.h

View File

@@ -1,7 +1,7 @@
# CMAKE generated file: DO NOT EDIT! # CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.28 # Generated by "Unix Makefiles" Generator, CMake Version 3.28
CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp \ CMakeFiles/Raytracer.dir/main.cpp.o: /home/cjsatnarine/Code/Raytracer/main.cpp \
/home/cjsatnarine/Code/Raytracer/aabb.h \ /home/cjsatnarine/Code/Raytracer/aabb.h \
/home/cjsatnarine/Code/Raytracer/bvh.h \ /home/cjsatnarine/Code/Raytracer/bvh.h \
/home/cjsatnarine/Code/Raytracer/camera.h \ /home/cjsatnarine/Code/Raytracer/camera.h \
@@ -13,6 +13,7 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/home/cjsatnarine/Code/Raytracer/ray.h \ /home/cjsatnarine/Code/Raytracer/ray.h \
/home/cjsatnarine/Code/Raytracer/rayTracer.h \ /home/cjsatnarine/Code/Raytracer/rayTracer.h \
/home/cjsatnarine/Code/Raytracer/sphere.h \ /home/cjsatnarine/Code/Raytracer/sphere.h \
/home/cjsatnarine/Code/Raytracer/texture.h \
/home/cjsatnarine/Code/Raytracer/vec3.h \ /home/cjsatnarine/Code/Raytracer/vec3.h \
/usr/include/alloca.h \ /usr/include/alloca.h \
/usr/include/asm-generic/errno-base.h \ /usr/include/asm-generic/errno-base.h \
@@ -261,8 +262,6 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h: /usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h:
/usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/sys/cdefs.h: /usr/include/x86_64-linux-gnu/sys/cdefs.h:
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: /usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
@@ -423,6 +422,12 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/include/c++/13/bits/char_traits.h: /usr/include/c++/13/bits/char_traits.h:
/usr/include/c++/13/bits/ostream.tcc:
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h:
/usr/include/c++/13/bits/ios_base.h:
/usr/include/errno.h: /usr/include/errno.h:
/usr/include/c++/13/bits/functional_hash.h: /usr/include/c++/13/bits/functional_hash.h:
@@ -471,11 +476,21 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/home/cjsatnarine/Code/Raytracer/rayTracer.h: /home/cjsatnarine/Code/Raytracer/rayTracer.h:
/usr/include/c++/13/bits/cxxabi_forced.h: /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/home/cjsatnarine/Code/Raytracer/vec3.h: /usr/include/locale.h:
/home/cjsatnarine/Code/Raytracer/colour.h: /usr/include/c++/13/ext/aligned_buffer.h:
/home/cjsatnarine/Code/Raytracer/texture.h:
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
/usr/include/c++/13/istream:
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h:
/usr/include/c++/13/pstl/glue_memory_defs.h:
/home/cjsatnarine/Code/Raytracer/hittable.h: /home/cjsatnarine/Code/Raytracer/hittable.h:
@@ -489,17 +504,21 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/include/c++/13/bits/align.h: /usr/include/c++/13/bits/align.h:
/home/cjsatnarine/Code/Raytracer/colour.h:
/usr/include/c++/13/bits/cxxabi_forced.h:
/home/cjsatnarine/Code/Raytracer/vec3.h:
/usr/include/c++/13/bits/nested_exception.h: /usr/include/c++/13/bits/nested_exception.h:
/home/cjsatnarine/Code/Raytracer/bvh.h: /home/cjsatnarine/Code/Raytracer/bvh.h:
/usr/include/c++/13/bits/ostream.tcc: /usr/include/x86_64-linux-gnu/sys/types.h:
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h: /home/cjsatnarine/Code/Raytracer/main.cpp:
/usr/include/c++/13/bits/ios_base.h: /usr/include/c++/13/backward/auto_ptr.h:
/home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp:
/usr/include/asm-generic/errno-base.h: /usr/include/asm-generic/errno-base.h:
@@ -527,8 +546,6 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/include/c++/13/bits/stl_raw_storage_iter.h: /usr/include/c++/13/bits/stl_raw_storage_iter.h:
/usr/include/c++/13/backward/auto_ptr.h:
/usr/include/c++/13/bits/basic_string.tcc: /usr/include/c++/13/bits/basic_string.tcc:
/usr/include/c++/13/bit: /usr/include/c++/13/bit:
@@ -541,12 +558,6 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/include/c++/13/bits/shared_ptr_base.h: /usr/include/c++/13/bits/shared_ptr_base.h:
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h:
/usr/include/locale.h:
/usr/include/c++/13/ext/aligned_buffer.h:
/usr/include/c++/13/ios: /usr/include/c++/13/ios:
/usr/include/x86_64-linux-gnu/bits/fp-logb.h: /usr/include/x86_64-linux-gnu/bits/fp-logb.h:
@@ -741,14 +752,6 @@ CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o: /home/cjsatnarine/Code/Raytracer/
/usr/include/c++/13/initializer_list: /usr/include/c++/13/initializer_list:
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
/usr/include/c++/13/istream:
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h:
/usr/include/c++/13/pstl/glue_memory_defs.h:
/usr/include/c++/13/limits: /usr/include/c++/13/limits:
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h: /usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h:

View File

@@ -1 +1 @@
/usr/bin/c++ -g CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o -o Raytracer /usr/bin/c++ -g CMakeFiles/Raytracer.dir/main.cpp.o -o Raytracer

Binary file not shown.

View File

@@ -0,0 +1,213 @@
CMakeFiles/Raytracer.dir/main.cpp.o: \
/home/cjsatnarine/Code/Raytracer/main.cpp /usr/include/stdc-predef.h \
/home/cjsatnarine/Code/Raytracer/rayTracer.h /usr/include/c++/13/cmath \
/usr/include/c++/13/bits/requires_hosted.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \
/usr/include/features.h /usr/include/features-time64.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/bits/timesize.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/long-double.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \
/usr/include/c++/13/pstl/pstl_config.h \
/usr/include/c++/13/bits/cpp_type_traits.h \
/usr/include/c++/13/ext/type_traits.h /usr/include/math.h \
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
/usr/include/x86_64-linux-gnu/bits/types.h \
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
/usr/include/x86_64-linux-gnu/bits/time64.h \
/usr/include/x86_64-linux-gnu/bits/math-vector.h \
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
/usr/include/x86_64-linux-gnu/bits/floatn.h \
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \
/usr/include/x86_64-linux-gnu/bits/fp-logb.h \
/usr/include/x86_64-linux-gnu/bits/fp-fast.h \
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \
/usr/include/x86_64-linux-gnu/bits/mathcalls.h \
/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \
/usr/include/x86_64-linux-gnu/bits/iscanonical.h \
/usr/include/c++/13/bits/std_abs.h /usr/include/stdlib.h \
/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \
/usr/include/x86_64-linux-gnu/bits/waitflags.h \
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
/usr/include/x86_64-linux-gnu/sys/types.h \
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h \
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \
/usr/include/x86_64-linux-gnu/bits/endian.h \
/usr/include/x86_64-linux-gnu/bits/endianness.h \
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
/usr/include/x86_64-linux-gnu/sys/select.h \
/usr/include/x86_64-linux-gnu/bits/select.h \
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
/usr/include/c++/13/bits/specfun.h \
/usr/include/c++/13/bits/stl_algobase.h \
/usr/include/c++/13/bits/functexcept.h \
/usr/include/c++/13/bits/exception_defines.h \
/usr/include/c++/13/ext/numeric_traits.h \
/usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \
/usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \
/usr/include/c++/13/bits/stl_iterator_base_types.h \
/usr/include/c++/13/bits/stl_iterator_base_funcs.h \
/usr/include/c++/13/bits/concept_check.h \
/usr/include/c++/13/debug/assertions.h \
/usr/include/c++/13/bits/stl_iterator.h \
/usr/include/c++/13/bits/ptr_traits.h /usr/include/c++/13/debug/debug.h \
/usr/include/c++/13/bits/predefined_ops.h /usr/include/c++/13/bit \
/usr/include/c++/13/limits /usr/include/c++/13/tr1/gamma.tcc \
/usr/include/c++/13/tr1/special_function_util.h \
/usr/include/c++/13/tr1/bessel_function.tcc \
/usr/include/c++/13/tr1/beta_function.tcc \
/usr/include/c++/13/tr1/ell_integral.tcc \
/usr/include/c++/13/tr1/exp_integral.tcc \
/usr/include/c++/13/tr1/hypergeometric.tcc \
/usr/include/c++/13/tr1/legendre_function.tcc \
/usr/include/c++/13/tr1/modified_bessel_func.tcc \
/usr/include/c++/13/tr1/poly_hermite.tcc \
/usr/include/c++/13/tr1/poly_laguerre.tcc \
/usr/include/c++/13/tr1/riemann_zeta.tcc /usr/include/c++/13/cstdlib \
/usr/include/c++/13/iostream /usr/include/c++/13/ostream \
/usr/include/c++/13/ios /usr/include/c++/13/iosfwd \
/usr/include/c++/13/bits/stringfwd.h \
/usr/include/c++/13/bits/memoryfwd.h /usr/include/c++/13/bits/postypes.h \
/usr/include/c++/13/cwchar /usr/include/wchar.h \
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \
/usr/include/x86_64-linux-gnu/bits/wchar.h \
/usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
/usr/include/c++/13/exception /usr/include/c++/13/bits/exception.h \
/usr/include/c++/13/bits/exception_ptr.h \
/usr/include/c++/13/bits/cxxabi_init_exception.h \
/usr/include/c++/13/typeinfo /usr/include/c++/13/bits/hash_bytes.h \
/usr/include/c++/13/new /usr/include/c++/13/bits/nested_exception.h \
/usr/include/c++/13/bits/char_traits.h \
/usr/include/c++/13/bits/localefwd.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \
/usr/include/c++/13/clocale /usr/include/locale.h \
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/cctype \
/usr/include/ctype.h /usr/include/c++/13/bits/ios_base.h \
/usr/include/c++/13/ext/atomicity.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \
/usr/include/pthread.h /usr/include/sched.h \
/usr/include/x86_64-linux-gnu/bits/sched.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \
/usr/include/x86_64-linux-gnu/bits/time.h \
/usr/include/x86_64-linux-gnu/bits/timex.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
/usr/include/x86_64-linux-gnu/bits/setjmp.h \
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \
/usr/include/x86_64-linux-gnu/sys/single_threaded.h \
/usr/include/c++/13/bits/locale_classes.h /usr/include/c++/13/string \
/usr/include/c++/13/bits/allocator.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \
/usr/include/c++/13/bits/new_allocator.h \
/usr/include/c++/13/bits/ostream_insert.h \
/usr/include/c++/13/bits/cxxabi_forced.h \
/usr/include/c++/13/bits/stl_function.h \
/usr/include/c++/13/backward/binders.h \
/usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \
/usr/include/c++/13/bits/range_access.h \
/usr/include/c++/13/initializer_list \
/usr/include/c++/13/bits/basic_string.h \
/usr/include/c++/13/ext/alloc_traits.h \
/usr/include/c++/13/bits/alloc_traits.h \
/usr/include/c++/13/bits/stl_construct.h /usr/include/c++/13/string_view \
/usr/include/c++/13/bits/functional_hash.h \
/usr/include/c++/13/bits/string_view.tcc \
/usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdio \
/usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \
/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
/usr/include/c++/13/cerrno /usr/include/errno.h \
/usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \
/usr/include/x86_64-linux-gnu/asm/errno.h \
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
/usr/include/c++/13/bits/charconv.h \
/usr/include/c++/13/bits/basic_string.tcc \
/usr/include/c++/13/bits/memory_resource.h /usr/include/c++/13/cstddef \
/usr/include/c++/13/bits/uses_allocator.h \
/usr/include/c++/13/bits/uses_allocator_args.h /usr/include/c++/13/tuple \
/usr/include/c++/13/bits/locale_classes.tcc \
/usr/include/c++/13/system_error \
/usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \
/usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \
/usr/include/c++/13/bits/streambuf.tcc \
/usr/include/c++/13/bits/basic_ios.h \
/usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \
/usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \
/usr/include/c++/13/bits/streambuf_iterator.h \
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \
/usr/include/c++/13/bits/locale_facets.tcc \
/usr/include/c++/13/bits/basic_ios.tcc \
/usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/istream \
/usr/include/c++/13/bits/istream.tcc /usr/include/c++/13/memory \
/usr/include/c++/13/bits/stl_tempbuf.h \
/usr/include/c++/13/bits/stl_uninitialized.h \
/usr/include/c++/13/bits/stl_raw_storage_iter.h \
/usr/include/c++/13/bits/align.h \
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \
/usr/include/x86_64-linux-gnu/bits/stdint-least.h \
/usr/include/c++/13/bits/unique_ptr.h \
/usr/include/c++/13/bits/shared_ptr.h \
/usr/include/c++/13/bits/shared_ptr_base.h \
/usr/include/c++/13/bits/allocated_ptr.h \
/usr/include/c++/13/ext/aligned_buffer.h \
/usr/include/c++/13/ext/concurrence.h \
/usr/include/c++/13/bits/shared_ptr_atomic.h \
/usr/include/c++/13/bits/atomic_base.h \
/usr/include/c++/13/bits/atomic_lockfree_defines.h \
/usr/include/c++/13/backward/auto_ptr.h \
/usr/include/c++/13/pstl/glue_memory_defs.h \
/usr/include/c++/13/pstl/execution_defs.h \
/home/cjsatnarine/Code/Raytracer/colour.h \
/home/cjsatnarine/Code/Raytracer/interval.h \
/home/cjsatnarine/Code/Raytracer/vec3.h \
/home/cjsatnarine/Code/Raytracer/ray.h \
/home/cjsatnarine/Code/Raytracer/bvh.h \
/home/cjsatnarine/Code/Raytracer/aabb.h /usr/include/c++/13/algorithm \
/usr/include/c++/13/bits/stl_algo.h \
/usr/include/c++/13/bits/algorithmfwd.h \
/usr/include/c++/13/bits/stl_heap.h \
/usr/include/c++/13/bits/uniform_int_dist.h \
/usr/include/c++/13/pstl/glue_algorithm_defs.h \
/home/cjsatnarine/Code/Raytracer/hittable.h \
/home/cjsatnarine/Code/Raytracer/hittableList.h \
/usr/include/c++/13/vector /usr/include/c++/13/bits/stl_vector.h \
/usr/include/c++/13/bits/stl_bvector.h \
/usr/include/c++/13/bits/vector.tcc \
/home/cjsatnarine/Code/Raytracer/camera.h \
/home/cjsatnarine/Code/Raytracer/material.h \
/home/cjsatnarine/Code/Raytracer/texture.h \
/home/cjsatnarine/Code/Raytracer/sphere.h

View File

@@ -129,29 +129,29 @@ Raytracer/fast:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/build $(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/build
.PHONY : Raytracer/fast .PHONY : Raytracer/fast
ImageGenerator.o: ImageGenerator.cpp.o main.o: main.cpp.o
.PHONY : ImageGenerator.o .PHONY : main.o
# target to build an object file # target to build an object file
ImageGenerator.cpp.o: main.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o $(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/main.cpp.o
.PHONY : ImageGenerator.cpp.o .PHONY : main.cpp.o
ImageGenerator.i: ImageGenerator.cpp.i main.i: main.cpp.i
.PHONY : ImageGenerator.i .PHONY : main.i
# target to preprocess a source file # target to preprocess a source file
ImageGenerator.cpp.i: main.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/ImageGenerator.cpp.i $(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/main.cpp.i
.PHONY : ImageGenerator.cpp.i .PHONY : main.cpp.i
ImageGenerator.s: ImageGenerator.cpp.s main.s: main.cpp.s
.PHONY : ImageGenerator.s .PHONY : main.s
# target to generate assembly for a file # target to generate assembly for a file
ImageGenerator.cpp.s: main.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/ImageGenerator.cpp.s $(MAKE) $(MAKESILENT) -f CMakeFiles/Raytracer.dir/build.make CMakeFiles/Raytracer.dir/main.cpp.s
.PHONY : ImageGenerator.cpp.s .PHONY : main.cpp.s
# Help Target # Help Target
help: help:
@@ -162,9 +162,9 @@ help:
@echo "... edit_cache" @echo "... edit_cache"
@echo "... rebuild_cache" @echo "... rebuild_cache"
@echo "... Raytracer" @echo "... Raytracer"
@echo "... ImageGenerator.o" @echo "... main.o"
@echo "... ImageGenerator.i" @echo "... main.i"
@echo "... ImageGenerator.s" @echo "... main.s"
.PHONY : help .PHONY : help

Binary file not shown.

View File

@@ -1,8 +1,8 @@
[ [
{ {
"directory": "/home/cjsatnarine/Code/Raytracer/build", "directory": "/home/cjsatnarine/Code/Raytracer/build",
"command": "/usr/bin/c++ -g -o CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o -c /home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp", "command": "/usr/bin/c++ -g -o CMakeFiles/Raytracer.dir/main.cpp.o -c /home/cjsatnarine/Code/Raytracer/main.cpp",
"file": "/home/cjsatnarine/Code/Raytracer/ImageGenerator.cpp", "file": "/home/cjsatnarine/Code/Raytracer/main.cpp",
"output": "CMakeFiles/Raytracer.dir/ImageGenerator.cpp.o" "output": "CMakeFiles/Raytracer.dir/main.cpp.o"
} }
] ]

View File

@@ -12,6 +12,8 @@ class hitRecord {
vec3 normal; vec3 normal;
shared_ptr<material> mat; shared_ptr<material> mat;
double t; double t;
double u;
double v;
bool frontFace; bool frontFace;
void setFaceNormal(const ray& r, const vec3& outwardNormal) { void setFaceNormal(const ray& r, const vec3& outwardNormal) {

449986
image.ppm

File diff suppressed because it is too large Load Diff

View File

@@ -7,13 +7,10 @@
#include "sphere.h" #include "sphere.h"
#include "texture.h" #include "texture.h"
int main(void) { void bouncingSpheres(void) {
// World. // World.
hittableList world; hittableList world;
auto checker = make_shared<checkerTexture>(0.32, colour(.2, .3, .1), colour(.9, .9, .9));
world.add(make_shared<sphere>(point3(0,-1000,0), 1000, make_shared<lambertian>(checker)));
// Code from the book. // Code from the book.
auto ground_material = make_shared<lambertian>(colour(0.5, 0.5, 0.5)); auto ground_material = make_shared<lambertian>(colour(0.5, 0.5, 0.5));
world.add(make_shared<sphere>(point3(0,-1000,0), 1000, ground_material)); world.add(make_shared<sphere>(point3(0,-1000,0), 1000, ground_material));
@@ -76,6 +73,41 @@ int main(void) {
cam.focusDistance = 10; cam.focusDistance = 10;
cam.render(world); cam.render(world);
}
return 0;
void checkeredSpheres(void) {
hittableList world;
auto checker = make_shared<checkerTexture>(0.32, colour(.9, .1, .1), colour(.9, .9, .9));
world.add(make_shared<sphere>(point3(0,-10, 0), 10, make_shared<lambertian>(checker)));
world.add(make_shared<sphere>(point3(0, 10, 0), 10, make_shared<lambertian>(checker)));
camera cam;
cam.aspectRatio = 16.0 / 9.0;
cam.imageWidth = 800;
cam.samplesPerPixel = 100;
cam.maxDepth = 50;
cam.vFieldOfView = 20;
cam.lookFrom = point3(13, 2, 3);
cam.lookAt = point3(0, 0, 0);
cam.vUp = vec3(0, 1, 0);
cam.defocusAngle = 0;
cam.render(world);
}
int main(void) {
int sceneToShow = 2;
switch (sceneToShow) {
case 1:
bouncingSpheres();
break;
case 2:
checkeredSpheres();
break;
}
} }

View File

@@ -2,6 +2,7 @@
#define MATERIAL_H #define MATERIAL_H
#include "rayTracer.h" #include "rayTracer.h"
#include "texture.h"
class hitRecord; class hitRecord;
@@ -16,20 +17,20 @@ class material {
class lambertian : public material { class lambertian : public material {
private: private:
colour albedo; shared_ptr<texture> tex;
public: public:
lambertian(const colour& albedo) : albedo(albedo) {} lambertian(const colour& albedo) : tex(make_shared<solidColour>(albedo)) {}
lambertian(shared_ptr<texture> tex) : tex(tex) {}
bool scatter(const ray& rIn, const hitRecord& rec, colour& attenuation, ray& scattered) bool scatter(const ray& rIn, const hitRecord& rec, colour& attenuation, ray& scattered) const override {
const override {
auto scatterDirection = rec.normal + randomUnitVector(); auto scatterDirection = rec.normal + randomUnitVector();
// Catch degenerate scatter direction. // Catch degenerate scatter direction.
if (scatterDirection.nearZero()) scatterDirection = rec.normal; if (scatterDirection.nearZero()) scatterDirection = rec.normal;
scattered = ray(rec.p, scatterDirection, rIn.time()); scattered = ray(rec.p, scatterDirection, rIn.time());
attenuation = albedo; attenuation = tex->value(rec.u, rec.v, rec.p);
return true; return true;
} }
}; };

50
texture.h Normal file
View File

@@ -0,0 +1,50 @@
#ifndef TEXTURE_H
#define TEXTURE_H
#include "rayTracer.h"
class texture {
public:
virtual ~texture() = default;
virtual colour value(double u, double v, const point3& p) const = 0;
};
class solidColour : public texture {
public:
solidColour(const colour& albedo) : albedo(albedo) {}
solidColour(double red, double green, double blue) : solidColour(colour(red, green, blue)) {}
colour value(double u, double v, const point3& p) const override {
return albedo;
}
private:
colour albedo;
};
class checkerTexture : public texture {
public:
checkerTexture(double scale, shared_ptr<texture> even, shared_ptr<texture> odd) : invScale(1.0 / scale), even(even), odd(odd) {}
checkerTexture(double scale, const colour& c1, const colour& c2) : invScale(1.0 / scale), even(make_shared<solidColour>(c1)), odd(make_shared<solidColour>(c2)) {}
colour value(double u, double v, const point3& p) const override {
auto xInteger = int(std::floor(invScale * p.x()));
auto yInteger = int(std::floor(invScale * p.y()));
auto zInteger = int(std::floor(invScale * p.z()));
bool isEven = (xInteger + yInteger + zInteger) % 2 == 0;
return isEven ? even->value(u, v, p) : odd->value(u, v, p);
}
private:
double invScale;
shared_ptr<texture> even;
shared_ptr<texture> odd;
};
#endif