Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project 3: Taylor Nelms #6

Open
wants to merge 143 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
2b5636a
Updated INSTRUCTION.md
YVin3D Sep 18, 2018
956abc8
Update CMake and project setup
shehzan10 Sep 17, 2019
1663b39
Update deadline
shehzan10 Sep 17, 2019
2b9e11c
Updated instructions with new slides and denoiser extra credit
YVin3D Sep 17, 2019
b3864ff
Merged instructions update
YVin3D Sep 17, 2019
f14aed0
Typo fixes in INSTRUCTION.md
shehzan10 Sep 17, 2019
9bdc3f9
Update INSTRUCTION.md
Sep 17, 2019
187f245
Update INSTRUCTION.md
Sep 17, 2019
aa1883b
Add missing libraries
shehzan10 Sep 18, 2019
424419b
Update README.md
taylornelms15 Sep 19, 2019
e2c77ed
Update README.md
taylornelms15 Sep 19, 2019
4444355
Update README.md
taylornelms15 Sep 19, 2019
d51d207
Update README.md
taylornelms15 Sep 19, 2019
a7db315
Update README.md
taylornelms15 Sep 19, 2019
d94f88f
Update README.md
taylornelms15 Sep 19, 2019
be1bf44
Added some object files to play with
taylornelms15 Sep 19, 2019
69ea294
Added some object files to play with
taylornelms15 Sep 19, 2019
637bae9
Merge branch 'master' of https://github.com/taylornelms15/Project3-CU…
taylornelms15 Sep 19, 2019
07076ce
Merge branch 'master' of https://github.com/taylornelms15/Project3-CU…
taylornelms15 Sep 19, 2019
0bb5cc3
Added some vector typedefs because I love myself enough for that
taylornelms15 Sep 19, 2019
5253f59
Added some vector typedefs because I love myself enough for that
taylornelms15 Sep 19, 2019
d900dbd
some utility changes
taylornelms15 Sep 19, 2019
d39c1b1
some utility changes
taylornelms15 Sep 19, 2019
47e483e
Update README.md
taylornelms15 Sep 20, 2019
767b2a7
Update README.md
taylornelms15 Sep 20, 2019
2ee2479
Added ability to add a SINGLE TRIANGLE to a scene!
taylornelms15 Sep 20, 2019
460086c
Added ability to add a SINGLE TRIANGLE to a scene!
taylornelms15 Sep 20, 2019
c345dab
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 20, 2019
0d4c124
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 20, 2019
d0d1b20
Added a few whole-room files
taylornelms15 Sep 20, 2019
7338dd5
Added a few whole-room files
taylornelms15 Sep 20, 2019
18e5a44
Update README.md
taylornelms15 Sep 20, 2019
e7c86fe
Update README.md
taylornelms15 Sep 20, 2019
5a3758b
tinyobjloader submodule
taylornelms15 Sep 20, 2019
71e2559
tinyobjloader submodule
taylornelms15 Sep 20, 2019
62bd170
tinyobjloader removed
taylornelms15 Sep 20, 2019
696ecf9
tinyobjloader removed
taylornelms15 Sep 20, 2019
8e285e5
redo submodule tinyobjloader
taylornelms15 Sep 20, 2019
4f23c21
redo submodule tinyobjloader
taylornelms15 Sep 20, 2019
de0ee8c
Added fireplace and breakfast rooms to assets
taylornelms15 Sep 20, 2019
97ebd45
Obj loader is shaping up (pun\!)
taylornelms15 Sep 20, 2019
01692fe
partial obj progress
taylornelms15 Sep 20, 2019
0474368
better obj committing
taylornelms15 Sep 20, 2019
6386b96
conflicts?
taylornelms15 Sep 20, 2019
8efe867
fixing lfs bs
taylornelms15 Sep 20, 2019
299a15a
Update README.md
taylornelms15 Sep 21, 2019
fdf105f
Mesh loading from file
taylornelms15 Sep 21, 2019
d61ba32
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 21, 2019
6ec56c3
Update README.md
taylornelms15 Sep 21, 2019
44f0058
grimdark no-ambient-light-term modification
taylornelms15 Sep 21, 2019
1031994
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 21, 2019
d1cffbb
diffuse lighting okay, but slow
taylornelms15 Sep 22, 2019
466208b
can deal with shiny surfaces now
taylornelms15 Sep 22, 2019
3939b3f
progress images and shiny colored ball scene
taylornelms15 Sep 22, 2019
55860bb
Update README.md
taylornelms15 Sep 22, 2019
51126ca
allow for splitting of mirror and other specular interaction
taylornelms15 Sep 22, 2019
7ab16ac
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 22, 2019
40f3f9f
toggle-able sorting by material id
taylornelms15 Sep 22, 2019
8cd9d80
started adding infrastructure for tracking time
taylornelms15 Sep 22, 2019
622635a
some weird rendering issues, but starting to work on bvh
taylornelms15 Sep 22, 2019
48cd1ac
reflections on triangles bad, but successfully BVHing meshes
taylornelms15 Sep 23, 2019
7faf125
triangle mesh intersections working
taylornelms15 Sep 23, 2019
590fc07
added a demo of a cute little bunny
taylornelms15 Sep 23, 2019
c47da6b
Update README.md
taylornelms15 Sep 23, 2019
a113ee5
Update README.md
taylornelms15 Sep 23, 2019
95dcdf7
Update README.md
taylornelms15 Sep 23, 2019
cb434b6
Update README.md
taylornelms15 Sep 23, 2019
9b1b65e
bunny image, wine object
taylornelms15 Sep 23, 2019
7986c14
Update README.md
taylornelms15 Sep 23, 2019
36db99a
better wineglass model
taylornelms15 Sep 23, 2019
b273922
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 23, 2019
d74a0f2
Update README.md
taylornelms15 Sep 23, 2019
7e452ad
Update README.md
taylornelms15 Sep 23, 2019
3d5639a
better wine glass
taylornelms15 Sep 23, 2019
83d7198
Update README.md
taylornelms15 Sep 23, 2019
8584b38
more progress
taylornelms15 Sep 23, 2019
f2a7516
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 23, 2019
68a179e
Update README.md
taylornelms15 Sep 23, 2019
1edf3bb
added fireplace room back into git repo
taylornelms15 Sep 23, 2019
59bcda0
Update README.md
taylornelms15 Sep 24, 2019
9c0abab
Update README.md
taylornelms15 Sep 24, 2019
d7c0d0a
gltf process begun
taylornelms15 Sep 24, 2019
8780a6a
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 24, 2019
d2fa644
object mods
taylornelms15 Sep 24, 2019
db97d92
scene mods
taylornelms15 Sep 24, 2019
02cf8eb
first steps at rendering Zelda
taylornelms15 Sep 24, 2019
567cc8b
Update README.md
taylornelms15 Sep 25, 2019
75d290f
gltf loading, using example code
taylornelms15 Sep 25, 2019
f935d41
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 25, 2019
2d23d34
progress image
taylornelms15 Sep 25, 2019
e9c479f
Update README.md
taylornelms15 Sep 25, 2019
7e204b6
Added foundations of texture handling
taylornelms15 Sep 25, 2019
78a57ff
Update README.md
taylornelms15 Sep 25, 2019
72cfc23
Update README.md
taylornelms15 Sep 25, 2019
06c29a4
Update README.md
taylornelms15 Sep 25, 2019
b1d391c
Update README.md
taylornelms15 Sep 25, 2019
66e4ab0
normal mapping works better now
taylornelms15 Sep 27, 2019
f554ad6
better zelda
taylornelms15 Sep 27, 2019
8222aba
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 27, 2019
0b83b0b
Update README.md
taylornelms15 Sep 27, 2019
02bb057
Update README.md
taylornelms15 Sep 27, 2019
55dc72a
texture mapping is functioning!
taylornelms15 Sep 27, 2019
93d9f70
Update README.md
taylornelms15 Sep 27, 2019
da630d0
Texture mapping looking good
taylornelms15 Sep 27, 2019
75a4887
altar crop image
taylornelms15 Sep 27, 2019
f61732a
Update README.md
taylornelms15 Sep 27, 2019
c71e2df
better image
taylornelms15 Sep 27, 2019
0af2378
Update README.md
taylornelms15 Sep 27, 2019
4642d72
Update README.md
taylornelms15 Sep 27, 2019
ac5f6ea
pic moving
taylornelms15 Sep 27, 2019
42f9a9d
moving
taylornelms15 Sep 27, 2019
39ecdc2
Finally got refraction working
taylornelms15 Sep 28, 2019
bb1bbff
procedural texture, for what it's worth
taylornelms15 Sep 28, 2019
820d8e1
got OIDN linked in
taylornelms15 Sep 29, 2019
9f2dc0f
ok still figuring out OIDN
taylornelms15 Sep 29, 2019
93cfead
Update README.md
taylornelms15 Sep 29, 2019
b0a71ca
OIDN complete
taylornelms15 Sep 29, 2019
2c3398c
Update README.md
taylornelms15 Sep 29, 2019
1f02eb9
Update README.md
taylornelms15 Sep 29, 2019
5604829
Update README.md
taylornelms15 Sep 29, 2019
de98413
more stuff?
taylornelms15 Sep 29, 2019
04c52ff
checkered imageS
taylornelms15 Sep 29, 2019
6ce4bc3
Update README.md
taylornelms15 Sep 29, 2019
455e043
Update README.md
taylornelms15 Sep 29, 2019
153b7a9
Update README.md
taylornelms15 Sep 29, 2019
fe966a5
rifles and bounding boxes
taylornelms15 Sep 29, 2019
15d1324
Update README.md
taylornelms15 Sep 29, 2019
0e5e19e
shiny things
taylornelms15 Sep 29, 2019
9434b21
Update README.md
taylornelms15 Sep 29, 2019
fd786e6
Update README.md
taylornelms15 Sep 29, 2019
3f5e8f1
Update README.md
taylornelms15 Sep 29, 2019
7a191c9
texture files better
taylornelms15 Sep 30, 2019
aa5b7f9
Update README.md
taylornelms15 Sep 30, 2019
93c22d5
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 30, 2019
236272d
Update README.md
taylornelms15 Sep 30, 2019
7a9a4c5
Update README.md
taylornelms15 Sep 30, 2019
3863347
Update README.md
taylornelms15 Sep 30, 2019
056e5b7
Update README.md
taylornelms15 Sep 30, 2019
f1041b6
utilities configuration like we want
taylornelms15 Sep 30, 2019
f436d0c
Update README.md
taylornelms15 Sep 30, 2019
7afe1a4
a few more demo images
taylornelms15 Sep 30, 2019
6d6a77b
Merge branch 'master' of github.com:taylornelms15/Project3-CUDA-Path-…
taylornelms15 Sep 30, 2019
feb26ce
Update README.md
taylornelms15 Sep 30, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[submodule "external/tinyobjloader"]
path = external/tinyobjloader
url = [email protected]:syoyo/tinyobjloader.git
[submodule "external/oidn"]
path = external/oidn
url = https://github.com/OpenImageDenoise/oidn.git
branch = master
[submodule "external/tbb"]
path = external/tbb
url = https://github.com/intel/tbb.git
branch = master
15 changes: 14 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

# Enable C++11 for host code
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
Expand Down Expand Up @@ -62,6 +62,10 @@ set(GLM_ROOT_DIR "external")
find_package(GLM REQUIRED)
include_directories(${GLM_INCLUDE_DIRS})

include_directories(external/tinyobjloader)
include_directories(external/gltfraytracexample)
include_directories(external/oidn/include)

set(headers
src/main.h
src/image.h
Expand All @@ -73,6 +77,9 @@ set(headers
src/sceneStructs.h
src/preview.h
src/utilities.h
src/texture.h
external/gltfraytracexample/gltf-loader.h
external/tinyobjloader/tiny_obj_loader.h
)

set(sources
Expand All @@ -84,6 +91,9 @@ set(sources
src/scene.cpp
src/preview.cpp
src/utilities.cpp
src/texture.cpp
external/gltfraytracexample/gltf-loader.cc
external/tinyobjloader/tiny_obj_loader.cc
)

list(SORT headers)
Expand All @@ -93,9 +103,12 @@ source_group(Headers FILES ${headers})
source_group(Sources FILES ${sources})

#add_subdirectory(stream_compaction) # TODO: uncomment if using your stream compaction
add_subdirectory(external/oidn)

cuda_add_executable(${CMAKE_PROJECT_NAME} ${sources} ${headers})
target_link_libraries(${CMAKE_PROJECT_NAME}
${LIBRARIES}
OpenImageDenoise
#stream_compaction # TODO: uncomment if using your stream compaction
)

256 changes: 251 additions & 5 deletions README.md

Large diffs are not rendered by default.

130 changes: 130 additions & 0 deletions external/gltfraytracexample/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# NanoSG

Simple, minimal and header-only scene graph library for NanoRT.

NanoSG itself shoud be compiled with C++-03 compiler, but demo code uses C++11 features.

![screenshot of the demo program](images/nanosg-demo.png)

![Animation showing node manipulation](https://media.giphy.com/media/l3JDO29fMFndyObHW/giphy.gif)

## Build

### Linux or macOS

```bash
premake5 gmake
make
```

### Windows

```bash
premake5 vs2015
```

## Data structure

### Node

Node represents scene graph node. Tansformation node or Mesh(shape) node.
Node is interpreted as transformation node when passing `nullptr` to Node class constructure.

Node can contain multiple children.

### Scene

Scene contains root nodes and provides the method to find an intersection of nodes.

## User defined data structure

Following are required in user application.

### Mesh class

Current example code assumes mesh is all composed of triangle meshes.

Following method must be implemented for `Scene::Traversal`.

```cpp
///
/// Get the geometric normal and the shading normal at `face_idx' th face.
///
template<typename T>
void GetNormal(T Ng[3], T Ns[3], const unsigned int face_idx, const T u, const T v) const;
```

### Intersection class

Represents intersection(hit) information.

### Transform

Transformation is done in the following procedure.

`M' = parent_xform x local_xform x local_pivot`

## Memory management

`Scene` and `Node` does not create a copy of asset data(e.g. vertices, indices). Thus user must care about memory management of scene assets in user side.

## API

API is still subject to change.

### Node

```cpp
void Node::SetName(const std::string &name);
```

Set (unique) name for the node.

```cpp
void Node::AddChild(const type &child);
```

Add node as child node.

```cpp
void Node::SetLocalXform(const T xform[4][4]) {
```

Set local transformation matrix. Default is identity matrix.

### Scene

```cpp
bool Scene::AddNode(const Node<T, M> &node);
```

Add a node to the scene.

```cpp
bool Scene::Commit() {
```

Commit the scene. After adding nodes to the scene or changed transformation matrix, call this `Commit` before tracing rays.
`Commit` triggers BVH build in each nodes and updates node's transformation matrix.

```cpp
template<class H>
bool Scene::Traverse(nanort::Ray<T> &ray, H *isect, const bool cull_back_face = false) const;
```

Trace ray into the scene and find an intersection.
Returns `true` when there is an intersection and hit information is stored in `isect`.

## TODO

* [ ] Compute pivot point of each node(mesh).

## Third party libraries and its icenses

* picojson : BSD license.
* bt3gui : zlib license.
* glew : BSD/MIT license.
* tinyobjloader : MIT license.
* glm : The Happy Bunny License (Modified MIT License). Copyright (c) 2005 - 2017 G-Truc Creation
* ImGui : The MIT License (MIT). Copyright (c) 2014-2015 Omar Cornut and ImGui contributors
* ImGuizmo : The MIT License (MIT). Copyright (c) 2016 Cedric Guillemet
23 changes: 23 additions & 0 deletions external/gltfraytracexample/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"commented_out_obj_filename": "cornellbox_suzanne.obj",
"gltf_filename": "../../models/Cube/Cube.gltf",
"scene_scale": 1.0,
"width": 512,
"height": 512,
"eye": [
0,
2.5,
15
],
"up": [
0,
1,
0
],
"look_at": [
0,
0,
0
],
"dummy": 0
}
Loading