Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
ce77595
Added shader program and window initialization (based on OpenGL tutor…
Feb 24, 2016
3d048cb
Fixed CmakeLists.txt typo to properly include OSX frameworks
Feb 26, 2016
0ff6662
Added ShaderProgram. Added Viewer. Added Box geometry
Feb 27, 2016
894ed0e
Added enable and disable attributes
Feb 27, 2016
b85e3ea
Finished Box class
Feb 27, 2016
9fbe608
Added jsconcpp as submodule
Feb 27, 2016
4d75985
Updated README. Added Camera class. Added wireframe view for box geom…
Feb 27, 2016
50ca623
Updated CMakeLists.txt to include jsoncpp and also include search dir…
Feb 27, 2016
44c157e
[README] - Updated README to include links to other thirdparty codes …
Feb 27, 2016
7ee9c9c
[scene][geo] - Parse json into scene view. Added transformation for geo
Feb 27, 2016
f2c5965
[fluidsolver] - Added barebone code for fluid solver
Feb 28, 2016
c3b3257
[fluidparticle] - Implemeted advection
Feb 28, 2016
9c1dce5
[fluidparticle] - Implemented advection using Euler integration
Feb 28, 2016
45c89f7
[geometry] - Removed setters for transformations and updated test scene
Feb 28, 2016
fc00d6a
Created fluidGeo for drawing fluids. Moved Json parser to utility.
Feb 28, 2016
d072522
Finished particle viewer
Feb 28, 2016
449a007
[input] - Added keyboard control
Feb 28, 2016
0711b1f
[fluidsolver] - Removed FluidParticle class (too slow). Added shaders…
Feb 28, 2016
281128a
Added FluidParticle. Split vao creation and vao update into separate …
Feb 28, 2016
69a51cb
[shaderProgram] - Added shader programs for transform feedbacks
Feb 28, 2016
6959741
Checkpoint
Feb 28, 2016
5bb41ef
Checkpoint
Feb 29, 2016
8c5fb0c
Merged drawprogram and emitprogram into one
Feb 29, 2016
4158317
Advect particle. Generally refactoring and code cleaning
Mar 1, 2016
6e2d082
updated link to jsoncpp
Mar 1, 2016
a16f49a
Updated README
Mar 1, 2016
d83583d
Update gitignore. Update vertex shader
Mar 21, 2016
8a80f06
Updated to latest version of nuparu
Mar 22, 2016
35468f2
Added SPHSolver. Updated color through vertex attribute. Added kernel…
Mar 23, 2016
410f121
Search for neighbor particles
Mar 23, 2016
7f2d754
Added linear test of particle neighbor search
Mar 23, 2016
c436184
Buggy incomplete submission before deadline
Mar 23, 2016
efa8def
Enabled TBB for neighbor search
Mar 26, 2016
e327a11
Uniform grid search
Mar 26, 2016
cfd71b1
API changes.
Mar 27, 2016
b5026e4
Added easy logging. Updated fluid in the correct group order. Clamp p…
Mar 30, 2016
6778887
Added CFL condition. Fixed pressure computation. Fixed pressure gradient
Mar 30, 2016
dde8ca1
Added z-curve indexing and viscosity force
Mar 30, 2016
bc69b37
[SRPINT 2] - Updated README and tweak parameters for the solver
Mar 30, 2016
fb8657c
[SPRINT 2] - Added TBB parallel_for to update particles
Mar 30, 2016
927fc33
[SPRINT 3] - Cached all neighbors for each particles. Used TBB to par…
Mar 31, 2016
34eeb4e
[SPRINT 3] - Updated gitignore, remove Debug folder, updated README
Mar 31, 2016
b559e17
[SPRINT 3] - Added LICENSE.md
Mar 31, 2016
695f867
[SPRINT 3] - Added instruction for compiling and building the code
Mar 31, 2016
be4996c
[SPRINT 3] - Added GUI for tweaking parameters
Apr 1, 2016
d6cca9c
[SPRINT 3] - Added submodule for nanogui
Apr 1, 2016
782cd5b
[SPRINT 3] - Added installation instructions and install.sh
Apr 1, 2016
9a8f064
[SPRINT 3] - Make install.sh executable
Apr 1, 2016
f54bdfd
[SPRINT 3] - Updated instruction for simple install.sh
Apr 1, 2016
e0598e3
[SRPINT 3] - Added combo box to select particle colors
Apr 2, 2016
4fd8d00
[SPRINT 3] - Fixed FPS. Added info about number of particles in sim
Apr 2, 2016
440e0b9
[SPRINT 3] - Added instruction to launch Korra
Apr 2, 2016
8f9882a
[SPRINT 3] - UPdated boundary conditions
Apr 6, 2016
7671dad
[SPRINT 3] - Check point: OpenVDB linked and initialized, added solid…
Apr 8, 2016
cec6bf5
[SPRINT 3] - Added 2 solide objects to scene
Apr 9, 2016
1c9e15e
[SPRINT 3] - MESHED
Apr 9, 2016
9f820bb
[SPRINT 3] - Added conditional flag to enable solids
Apr 10, 2016
78a3523
[SPRINT 3] - Added buttons to add solids during real time
Apr 10, 2016
116a3c3
[SPRINT 3] - Cache ijk grid index
Apr 10, 2016
5caac17
[SPRINT 3] - Added screenshot savings
Apr 10, 2016
bdb26b6
[SPRINT 3] - UPdated readme and prepeing scenes for the demo
Apr 11, 2016
cb967c7
[SPRINT 3] SUBIMSSION with new README
Apr 11, 2016
b80d6c9
[SPRINT 3] - Final project proposal. Stopped cout call for performanc…
Apr 16, 2016
df38220
[openvdb] - Mark section of code for openvdb_points with #define so w…
Apr 18, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
Thanda.xcodeproj
Thanda.build
Korra.xcodeproj
Korra.build
DerivedData
CMakeScripts
CMakeFiles
CMakeCache.txt
cmake_install.cmake
CMakeLists.txt.user
build*/
Debug/
*.sublime*
*.log
7 changes: 7 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[submodule "src/thirdparty/jsoncpp"]
path = src/thirdparty/jsoncpp
url = git@github.com:open-source-parsers/jsoncpp.git

[submodule "src/thirdparty/nanogui"]
path = src/thirdparty/nanogui
url = git@github.com:wjakob/nanogui.git
81 changes: 68 additions & 13 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
##################
# Thanda #
# Korra #
##################

# credit - base CMake config : Yining Karl Li , edited CMake config: Akshay Shah & Debanshu Singh

#name your project
project(Thanda)
project(Korra)
cmake_minimum_required(VERSION 2.8)

# include source directories
include_directories(
src/
)

# set creates a variable
set (NUPARU "nuparu")
# add include and src directories to path
Expand All @@ -26,6 +31,28 @@ elseif(WIN32)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${NUPARU}/lib/win)
endif()

# set creates a variable
set (THIRDPARTY "src/thirdparty")
# add include and src directories to path for nanogui
include_directories(
${THIRDPARTY}/nanogui/include
${THIRDPARTY}/nanogui/src
)

# NanoGUI library path
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${THIRDPARTY}/nanogui)

# add include and src directories to path for openvdb_points
include_directories(
/usr/local/include/openvdb/
/usr/local/openvdb/
/Library/Frameworks/Houdini.framework/Versions/15.0.347/Resources/toolkit/include/
)

# OpenVDB point library path
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /usr/local/openvdb/lib)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /Library/Frameworks/Houdini.framework/Versions/15.0.347/Libraries/)

#set include variables
set(GLFW_INCLUDE_DIR ${NUPARU}/include )
set(GLEW_INCLUDE_DIR ${NUPARU}/include )
Expand All @@ -37,6 +64,11 @@ find_package(OPENGL REQUIRED)
find_package(GLEW)
find_library(GLFW_LIBRARY "glfw3" HINTS ${GLFW_LIBRARY_DIR})
find_library(JSONCPP "jsoncpp")
find_library(TBB "tbb")
find_library(NANOGUI "nanogui")
find_library(HALF "half")
find_library(OPENVDB "openvdb")
find_library(OPENVDB_POINTS "openvdb_points")

add_definitions(
-DTW_STATIC
Expand All @@ -46,14 +78,18 @@ add_definitions(
-D_CRT_SECURE_NO_WARNINGS
)

set(CORE_LIBS ${GLFW_LIBRARY} ${GLUT_LIBRARY} ${GLEW_LIBRARY} ${JSONCPP} ${OPENGL_LIBRARY} )
set(CORE_LIBS ${GLFW_LIBRARY} ${GLUT_LIBRARY} ${GLEW_LIBRARY} ${JSONCPP} ${TBB} ${HALF} ${OPENVDB} ${OPENVDB_POINTS} ${NANOGUI} ${OPENGL_LIBRARY} )

# OSX-specific hacks/fixes
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
#Link IOKit because this is where we get GL stuff for OSX
set(COREVIDEO "-framework CoreVideo")
set(IOKIT "-framework IOKit")
set(CORELIBS ${CORELIBS} ${IOKIT} ${COREVIDEO})
find_library(COCOA Cocoa)
find_library(COREVIDEO CoreVideo)
find_library(IOKIT IOKit)
find_library(COREFOUNDATION CoreFoundation)
find_library(CARBON_FRAMEWORK Carbon)

set(CORE_LIBS ${CORE_LIBS} "-framework Cocoa -framework IOKit -framework CoreFoundation -framework CoreVideo -framework Carbon")

endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

# Linux specific hacks/fixes
Expand All @@ -69,25 +105,44 @@ elseif(WIN32)
endif()

if(MSVC)
set(COMPILER_FLAGS
set(COMPILER_FLAGS
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_C_FLAGS
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
)
endif()

# Add source files you want to compile (.cpp)
set(CORE_SRC
nuparu/src/stb_image/stb_image_write.c
src/loadShaders.cpp
src/utility.cpp
src/main.cpp
src/shaderProgram/shaderProgram.cpp
src/shaderProgram/particleAdvectProgram.cpp
src/input/keyboardControl.cpp
src/viewer.cpp
src/camera/camera.cpp
src/viewer/viewer.cpp
src/geometry/geometry.cpp
src/geometry/box.cpp
src/geometry/fluidGeo.cpp
src/fluidSolver/fluidParticle.cpp
src/fluidSolver/fluidSolver.cpp
src/fluidSolver/SPHGrid.cpp
src/fluidSolver/SPHSolver.cpp
src/scene/scene.cpp
src/geom/geom.cpp
)

add_executable(Thanda ${CORE_SRC})
target_link_libraries(Thanda ${CORE_LIBS})
add_executable(Korra ${CORE_SRC})
target_link_libraries(Korra ${CORE_LIBS})

# Include zlib for osx
find_package( ZLIB REQUIRED )
if ( ZLIB_FOUND )
include_directories( ${ZLIB_INCLUDE_DIRS} )
target_link_libraries( Korra ${ZLIB_LIBRARIES} )
endif( ZLIB_FOUND )

98 changes: 98 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
The MIT License

Copyright (c) 2016 [Trung Le](http://www.trungtuanle.com/), [Debanshu Singh](http://www.debanshusingh.com/)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Third-Party Code
=============================

Korra fluid solver includes the following third-party code.

## easylogging++

https://github.com/easylogging/easyloggingpp

The MIT License (MIT)

Copyright (c) 2015 muflihun.com

http://github.com/easylogging/
http://easylogging.muflihun.com
http://muflihun.com

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

## nanogui

https://github.com/wjakob/nanogui

Copyright (c) 2015 Wenzel Jakob <wenzel@inf.ethz.ch>, All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

You are under no obligation whatsoever to provide any bug fixes, patches, or
upgrades to the features, functionality or performance of the source code
("Enhancements") to anyone; however, if you choose to make your Enhancements
available either publicly, or directly to the author of this software, without
imposing a separate written license agreement for such Enhancements, then you
hereby grant the following license: a non-exclusive, royalty-free perpetual
license to install, use, modify, prepare derivative works, incorporate into
other computer software, distribute, and sublicense such enhancements or
derivative works thereof, in binary and source code form.


Loading