From 053638480e2a395cf676aad25753dd9e906c3f90 Mon Sep 17 00:00:00 2001 From: KOPANAS Georgios <georgios.kopanas@inria.fr> Date: Tue, 27 Jul 2021 16:22:50 +0200 Subject: [PATCH] copyrights | readme --- CMakeLists.txt | 10 +++ README.md | 17 +++-- apps/opengl_impl/CMakeLists.txt | 10 +++ apps/opengl_impl/main.cpp | 12 +++ renderer/CMakeLists.txt | 9 +++ renderer/Config.hpp | 11 +++ renderer/DeepLearningPointViewOGL.cpp | 11 +++ renderer/DeepLearningPointViewOGL.hpp | 11 +++ renderer/PbnrScene.cpp | 11 +++ renderer/PbnrScene.hpp | 11 +++ renderer/RenderingUtilities.cpp | 11 +++ renderer/RenderingUtilities.hpp | 11 +++ renderer/p3d_rasterizer/bitmask.cuh | 73 ------------------- .../p3d_rasterizer/rasterization_utils.cuh | 30 -------- renderer/p3d_rasterizer/rasterize_points.cu | 12 ++- renderer/p3d_rasterizer/rasterize_points.h | 11 +++ renderer/p3d_rasterizer/soft_depth_test.cpp | 11 +++ renderer/p3d_rasterizer/soft_depth_test.cu | 11 +++ renderer/p3d_rasterizer/soft_depth_test.h | 11 +++ 19 files changed, 183 insertions(+), 111 deletions(-) delete mode 100644 renderer/p3d_rasterizer/bitmask.cuh diff --git a/CMakeLists.txt b/CMakeLists.txt index 88398aa..570fce2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,13 @@ +# Copyright (C) 2020, Inria +# GRAPHDECO research group, https://team.inria.fr/graphdeco +# All rights reserved. +# +# This software is free for non-commercial, research and evaluation use +# under the terms of the LICENSE.md file. +# +# For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + + project(sibr_pbnr_all) add_subdirectory(apps) diff --git a/README.md b/README.md index 5eca369..e3e8821 100644 --- a/README.md +++ b/README.md @@ -41,17 +41,19 @@ Compiling **with** scene preprocessing: cd PROJECT_DIR git clone https://gitlab.inria.fr/sibr/sibr_core.git cd sibr_core/src/projects/ -git clone https://gitlab.inria.fr/jphilip/torchgl_interop.git +git clone https://gitlab.inria.fr/sibr/torchgl_interop.git git clone https://gitlab.inria.fr/gkopanas/pointbased_neural_rendering.git -git clone https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending.git git clone https://gitlab.inria.fr/sibr/projects/fribr_framework.git git clone https://gitlab.inria.fr/sibr/projects/tfgl_interop.git +git clone https://gitlab.inria.fr/sibr/projects/inside_out_deep_blending.git cd torchgl_interop git checkout origin/pbnr -b pbnr cd ../../../ cmake.exe -S./ -B./build -DBUILD_DOCUMENTATION:BOOL=ON -DBUILD_IBR_DATASET_TOOLS:BOOL=ON -DBUILD_IBR_POINTBASED_NEURAL_RENDERING:BOOL=ON -DBUILD_IBR_TORCHGL_INTEROP:BOOL=ON -DBUILD_IBR_FRIBR_FRAMEWORK:BOOL=ON -DBUILD_IBR_INSIDE_OUT_DEEP_BLENDING:BOOL=ON -DBUILD_IBR_TFGL_INTEROP:BOOL=ON -G "Visual Studio 16 2019" cmake --build ./build --target ALL_BUILD --config RelWithDebInfo cmake --build ./build --target INSTALL --config RelWithDebInfo +cp ./extlibs/libtorch/lib/caffe2_nvrtc.dll ./install/bin/ +cp ./extlibs/libtorch/lib/nvrtc* ./install/bin/ ``` Compiling **without** scene preprocessing: @@ -59,7 +61,7 @@ Compiling **without** scene preprocessing: cd PROJECT_DIR git clone https://gitlab.inria.fr/sibr/sibr_core.git cd sibr_core/src/projects/ -git clone https://gitlab.inria.fr/jphilip/torchgl_interop.git +git clone https://gitlab.inria.fr/sibr/torchgl_interop.git git clone https://gitlab.inria.fr/gkopanas/pointbased_neural_rendering.git cd torchgl_interop git checkout origin/pbnr -b pbnr @@ -67,6 +69,8 @@ cd ../../../ cmake.exe -S./ -B./build -DBUILD_DOCUMENTATION:BOOL=ON -DBUILD_IBR_DATASET_TOOLS:BOOL=ON -DBUILD_IBR_POINTBASED_NEURAL_RENDERING:BOOL=ON -DBUILD_IBR_TORCHGL_INTEROP:BOOL=ON -G "Visual Studio 16 2019" cmake --build ./build --target ALL_BUILD --config RelWithDebInfo cmake --build ./build --target INSTALL --config RelWithDebInfo +cp ./extlibs/libtorch/lib/caffe2_nvrtc.dll ./install/bin/ +cp ./extlibs/libtorch/lib/nvrtc* ./install/bin/ ``` ## Training a Scene @@ -135,8 +139,7 @@ cd ../bin/ ``` </details> -<details> -<summary> Create a json file from the following template, we will need it later on as input to the training script. </summary> + Create a json file from the following template, we will need it later on as input to the training script. ```.json SCENE_JSON_FILE.json @@ -152,7 +155,6 @@ SCENE_JSON_FILE.json ] } ``` -</details> <sup>1</sup>*For conciseness we mention only the files that we use, more files and folders exist.* @@ -161,7 +163,7 @@ SCENE_JSON_FILE.json | | | | |:-------------------------:|:-------------------------:|:-------------------------:| |<img width="1604" src="./docs/museum_thumb.jpg">[Museum Input Files](https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Museum-1_perview.zip)<br>[Pre-Trained Files](https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/museum_trained.zip)| <img width="1604" src="./docs/hugo_thumb.jpg"> [Hugo Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Hugo-1_perview.zip )<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/hugo_trained.zip ) | <img width="1604" src="./docs/ponche_thumb.jpg"> [Ponche Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Ponche_perview.zip)<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/ponche_trained.zip ) | -|<img width="1604" src="./docs/tree_thumb.jpg">[Tree Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Tree-18_perview.zip)<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/tree_trained.zip ) | <img width="1604" src="./docs/street_thumb.jpg"> [Street Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Street-10_perview.zip )<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/street_trained.zip) | <img width="1604" src="./docs/stairs_thumb.jpg">[Stairs Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Stairs-1_perview.zip)<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/stairs_trained.zip)| +|<img width="1604" src="./docs/tree_thumb.jpg">[Tree Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Tree-18_perview.zip)<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/tree_trained.zip ) | <img width="1604" src="./docs/street_thumb.jpg"> [Street Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Street-10_perview.zip )<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/street_trained.zip) <br>[Pre-Trained Files (for small GPUs)]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/street_trained_small.zip) | <img width="1604" src="./docs/stairs_thumb.jpg">[Stairs Input Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Stairs-1_perview.zip)<br>[Pre-Trained Files]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/stairs_trained.zip)| ||<img width="1604" src="./docs/truck_thumb.jpg">[Truck Images<sup>1</sup>]( https://repo-sam.inria.fr/fungraph/differentiable-multi-view/data/scenes/Truck_images.zip)<br>|| <sup>1</sup> *We provide only images for Truck since providing the whole scene was not storage efficient. To use this scene you would need to run the pre-processing step locally.* @@ -191,6 +193,7 @@ Now we can run a training session for a scene: ```.bash python train_full_pipeline.py -i SCENE_JSON_FILE.json -o run_name ``` +*For more details for the JSON file refer to "Create your own Scene" Section* ## Running the Interactive Renderer diff --git a/apps/opengl_impl/CMakeLists.txt b/apps/opengl_impl/CMakeLists.txt index 4829f75..6e2fdf5 100644 --- a/apps/opengl_impl/CMakeLists.txt +++ b/apps/opengl_impl/CMakeLists.txt @@ -1,3 +1,13 @@ +# Copyright (C) 2020, Inria +# GRAPHDECO research group, https://team.inria.fr/graphdeco +# All rights reserved. +# +# This software is free for non-commercial, research and evaluation use +# under the terms of the LICENSE.md file. +# +# For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + + project(SIBR_pbnr_opengl_impl) file(GLOB SOURCES "*.cpp" "*.h" "*.hpp") diff --git a/apps/opengl_impl/main.cpp b/apps/opengl_impl/main.cpp index 7faf808..8a63603 100644 --- a/apps/opengl_impl/main.cpp +++ b/apps/opengl_impl/main.cpp @@ -1,3 +1,15 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + + #include <fstream> #include <core/graphics/Window.hpp> diff --git a/renderer/CMakeLists.txt b/renderer/CMakeLists.txt index 354771e..b3177b0 100644 --- a/renderer/CMakeLists.txt +++ b/renderer/CMakeLists.txt @@ -1,3 +1,12 @@ +# Copyright (C) 2020, Inria +# GRAPHDECO research group, https://team.inria.fr/graphdeco +# All rights reserved. +# +# This software is free for non-commercial, research and evaluation use +# under the terms of the LICENSE.md file. +# +# For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + set(SIBR_PROJECT "pbnr") project(sibr_${SIBR_PROJECT}) diff --git a/renderer/Config.hpp b/renderer/Config.hpp index e360fea..a82d013 100644 --- a/renderer/Config.hpp +++ b/renderer/Config.hpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once # include <core/system/Config.hpp> diff --git a/renderer/DeepLearningPointViewOGL.cpp b/renderer/DeepLearningPointViewOGL.cpp index 993282c..749134c 100644 --- a/renderer/DeepLearningPointViewOGL.cpp +++ b/renderer/DeepLearningPointViewOGL.cpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include "DeepLearningPointViewOGL.hpp" #include <torch/script.h> diff --git a/renderer/DeepLearningPointViewOGL.hpp b/renderer/DeepLearningPointViewOGL.hpp index b96b441..14330a8 100644 --- a/renderer/DeepLearningPointViewOGL.hpp +++ b/renderer/DeepLearningPointViewOGL.hpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once #include "Config.hpp" #include <core/view/MultiMeshManager.hpp> diff --git a/renderer/PbnrScene.cpp b/renderer/PbnrScene.cpp index e35740d..35813bd 100644 --- a/renderer/PbnrScene.cpp +++ b/renderer/PbnrScene.cpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include "PbnrScene.hpp" #include "json.hpp" #include "projects/torchgl_interop/renderer/torchgl_interop.h" diff --git a/renderer/PbnrScene.hpp b/renderer/PbnrScene.hpp index 2e3f7ee..99f4c7b 100644 --- a/renderer/PbnrScene.hpp +++ b/renderer/PbnrScene.hpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once #include "Config.hpp" diff --git a/renderer/RenderingUtilities.cpp b/renderer/RenderingUtilities.cpp index 47fa9f9..d65c531 100644 --- a/renderer/RenderingUtilities.cpp +++ b/renderer/RenderingUtilities.cpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include "RenderingUtilities.hpp" #include "projects/torchgl_interop/renderer/torchgl_interop.h" diff --git a/renderer/RenderingUtilities.hpp b/renderer/RenderingUtilities.hpp index 4178f97..65e3fd3 100644 --- a/renderer/RenderingUtilities.hpp +++ b/renderer/RenderingUtilities.hpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include "torch/torch.h" #include "core/graphics/Camera.hpp" diff --git a/renderer/p3d_rasterizer/bitmask.cuh b/renderer/p3d_rasterizer/bitmask.cuh deleted file mode 100644 index b72ce81..0000000 --- a/renderer/p3d_rasterizer/bitmask.cuh +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved. - -#pragma once -#define BINMASK_H - -// A BitMask represents a bool array of shape (H, W, N). We pack values into -// the bits of unsigned ints; a single unsigned int has B = 32 bits, so to hold -// all values we use H * W * (N / B) = H * W * D values. We want to store -// BitMasks in shared memory, so we assume that the memory has already been -// allocated for it elsewhere. -class BitMask { - public: - __device__ BitMask(unsigned int* data, int H, int W, int N) - : data(data), H(H), W(W), B(8 * sizeof(unsigned int)), D(N / B) { - // TODO: check if the data is null. - N = ceilf(N % 32); // take ceil incase N % 32 != 0 - block_clear(); // clear the data - } - - // Use all threads in the current block to clear all bits of this BitMask - __device__ void block_clear() { - for (int i = threadIdx.x; i < H * W * D; i += blockDim.x) { - data[i] = 0; - } - __syncthreads(); - } - - __device__ int _get_elem_idx(int y, int x, int d) { - return y * W * D + x * D + d / B; - } - - __device__ int _get_bit_idx(int d) { - return d % B; - } - - // Turn on a single bit (y, x, d) - __device__ void set(int y, int x, int d) { - int elem_idx = _get_elem_idx(y, x, d); - int bit_idx = _get_bit_idx(d); - const unsigned int mask = 1U << bit_idx; - atomicOr(data + elem_idx, mask); - } - - // Turn off a single bit (y, x, d) - __device__ void unset(int y, int x, int d) { - int elem_idx = _get_elem_idx(y, x, d); - int bit_idx = _get_bit_idx(d); - const unsigned int mask = ~(1U << bit_idx); - atomicAnd(data + elem_idx, mask); - } - - // Check whether the bit (y, x, d) is on or off - __device__ bool get(int y, int x, int d) { - int elem_idx = _get_elem_idx(y, x, d); - int bit_idx = _get_bit_idx(d); - return (data[elem_idx] >> bit_idx) & 1U; - } - - // Compute the number of bits set in the row (y, x, :) - __device__ int count(int y, int x) { - int total = 0; - for (int i = 0; i < D; ++i) { - int elem_idx = y * W * D + x * D + i; - unsigned int elem = data[elem_idx]; - total += __popc(elem); - } - return total; - } - - private: - unsigned int* data; - int H, W, B, D; -}; diff --git a/renderer/p3d_rasterizer/rasterization_utils.cuh b/renderer/p3d_rasterizer/rasterization_utils.cuh index ccebda9..ec5f70a 100644 --- a/renderer/p3d_rasterizer/rasterization_utils.cuh +++ b/renderer/p3d_rasterizer/rasterization_utils.cuh @@ -2,9 +2,6 @@ #pragma once -// Given a pixel coordinate 0 <= i < S, convert it to a normalized device -// coordinate in the range [-1, 1]. We divide the NDC range into S evenly-sized -// pixels, and assume that each pixel falls in the *center* of its range. __device__ inline float PixToNdc(int i, int S) { // NDC x-offset + (i * pixel_width + half_pixel_width) return -1 + (2 * i + 1.0f) / S; @@ -14,19 +11,12 @@ __device__ inline float NdcToPix(float i, int S) { return ((i + 1.0)*S - 1.0)/2.0; } -// The maximum number of points per pixel that we can return. Since we use -// thread-local arrays to hold and sort points, the maximum size of the array -// needs to be known at compile time. There might be some fancy template magic -// we could use to make this more dynamic, but for now just fix a constant. -// TODO: is 8 enough? Would increasing have performance considerations? const int32_t kMaxPointsPerPixel = 101; const int32_t kMaxPointPerPixelLocal = 101; template <typename T> __device__ inline void BubbleSort(T* arr, int n) { bool already_sorted; - // Bubble sort. We only use it for tiny thread-local arrays (n < 8); in this - // regime we care more about warp divergence than computational complexity. for (int i = 0; i < n - 1; ++i) { already_sorted=true; for (int j = 0; j < n - i - 1; ++j) { @@ -42,23 +32,3 @@ __device__ inline void BubbleSort(T* arr, int n) { } } -__device__ inline void BubbleSort2(int32_t* arr, const float* points, int n) { - bool already_sorted; - // Bubble sort. We only use it for tiny thread-local arrays (n < 8); in this - // regime we care more about warp divergence than computational complexity. - for (int i = 0; i < n - 1; ++i) { - already_sorted=true; - for (int j = 0; j < n - i - 1; ++j) { - float p_j0_z = points[arr[j]*3 + 2]; - float p_j1_z = points[arr[j+1]*3 + 2]; - if (p_j1_z < p_j0_z) { - already_sorted = false; - int32_t temp = arr[j]; - arr[j] = arr[j + 1]; - arr[j + 1] = temp; - } - } - if (already_sorted) - break; - } -} diff --git a/renderer/p3d_rasterizer/rasterize_points.cu b/renderer/p3d_rasterizer/rasterize_points.cu index 3d95b95..943496a 100644 --- a/renderer/p3d_rasterizer/rasterize_points.cu +++ b/renderer/p3d_rasterizer/rasterize_points.cu @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include <math.h> #include <torch/torch.h> #include <cstdio> @@ -5,7 +16,6 @@ #include <iostream> #include <tuple> #include <stdio.h> -#include "bitmask.cuh" #include "rasterization_utils.cuh" diff --git a/renderer/p3d_rasterizer/rasterize_points.h b/renderer/p3d_rasterizer/rasterize_points.h index cf1ab39..41b9a9c 100644 --- a/renderer/p3d_rasterizer/rasterize_points.h +++ b/renderer/p3d_rasterizer/rasterize_points.h @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once #include <torch/torch.h> #include <cstdio> diff --git a/renderer/p3d_rasterizer/soft_depth_test.cpp b/renderer/p3d_rasterizer/soft_depth_test.cpp index 5a72009..d333b7a 100644 --- a/renderer/p3d_rasterizer/soft_depth_test.cpp +++ b/renderer/p3d_rasterizer/soft_depth_test.cpp @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once #include "soft_depth_test.h" diff --git a/renderer/p3d_rasterizer/soft_depth_test.cu b/renderer/p3d_rasterizer/soft_depth_test.cu index c35b457..668132d 100644 --- a/renderer/p3d_rasterizer/soft_depth_test.cu +++ b/renderer/p3d_rasterizer/soft_depth_test.cu @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #include <stdio.h> #include <torch/torch.h> #include "rasterization_utils.cuh" diff --git a/renderer/p3d_rasterizer/soft_depth_test.h b/renderer/p3d_rasterizer/soft_depth_test.h index 4f68a2a..1474fad 100644 --- a/renderer/p3d_rasterizer/soft_depth_test.h +++ b/renderer/p3d_rasterizer/soft_depth_test.h @@ -1,3 +1,14 @@ +/* + * Copyright (C) 2020, Inria + * GRAPHDECO research group, https://team.inria.fr/graphdeco + * All rights reserved. + * + * This software is free for non-commercial, research and evaluation use + * under the terms of the LICENSE.md file. + * + * For inquiries contact sibr@inria.fr and/or George.Drettakis@inria.fr + */ + #pragma once #include <torch/torch.h> -- GitLab