Giter VIP home page Giter VIP logo

luisarender's Introduction

LuisaRender

LuisaRender is a high-performance cross-platform Monte-Carlo renderer for stream architectures based on LuisaCompute.

LuisaRender is also the rendering application described in the SIGGRAPH Asia 2022 paper

LuisaRender: A High-Performance Rendering Framework with Layered and Unified Interfaces on Stream Architectures.

See also LuisaCompute for the underlying framework as described in the paper; and please visit the project page for other information about the paper and the project.

Building

LuisaRender follows the standard CMake build process. Basically these steps:

  • Check your hardware and platform. Currently, we support CUDA on Linux and Windows; DirectX on Windows; Metal on macOS; and ISPC and LLVM on all the major platforms. For CUDA and DirectX, an RTX-enabled graphics card, e.g., NVIDIA RTX 20 and 30 series, is required.

  • Prepare the environment and dependencies. We recommend using the latest IDEs, Compilers, CMake, CUDA drivers, etc. Since we aggressively use new technologies like C++20 and OptiX 7.1+, you may need to, for example, upgrade your VS to 2019 or 2022, and install CUDA 11.2+.

  • Clone the repo with the --recursive option:

    git clone --recursive https://github.com/LuisaGroup/LuisaRender.git

    Since we use Git submodules to manage third-party dependencies, a --recursive clone is required.

  • Configure the project using CMake. E.g., for command line, cd into the project folder and type cmake -S . -B <build-folder>. You might also want to specify your favorite generators and build types using options like -G Ninja and -D CMAKE_BUILD_TYPE=Release. A typical, full command sequence for this would be like

    cd LuisaRender
    cmake -S . -B build -D CMAKE_BUILD_TYPE=Release
  • If the configuration succeeds, you are now able to build the project. Type cmake --build <build-folder> in the command line, or push the build button if you generated, e.g., a VS project. (And in case the configuration step unluckily failed :-(, please file an issue).

  • After building, you will find the CLI executable at <build-folder>/bin/luisa-render-cli.

See also BUILD.md for details on platform requirements, configuration options, and other precautions.

Usage

Use command line to execute LuisaRender:

<build-fodler>/bin/luisa-render-cli -b <backend> [-d <device-index>] <scene-file>

To print the help message about the command line arguments, simply type

<build-fodler>/bin/luisa-render-cli -h

or

<build-fodler>/bin/luisa-render-cli --help

Scenes

LuisaRender supports a JSON-based and a custom text-based formats for scene description. We maintain the demo scenes in a separate repo. We sincerely thank all the authors, Rendering Resources, Poly Heaven, and Blender Demo Files for sharing these amazing resources.

We also provide a simple script at tools/tungsten2luisa.py to convert Tungsten scenes into LuisaRender's custom scene description language; and a CLI application at src/apps/export.cpp (compiled to <build-folder>/bin/luisa-render-export) to convert glTF scenes to LuisaRender's JSON-based format. But please note that both tools are not perfect. Manual tweaks are sometimes necessary to fix conversion errors and/or align the converted scenes to their original appearances.

Contemporary Bathroom

Download: LuisaRender

  • Credit: Mareck (CC0)
  • Converted from Tungsten version at Rendering Resources
  • Resolution: 1024x1024
  • Samples: 65536
  • Tonemapping: ACES (exposure = -0.5)

Bathroom

Bedroom

Download: LuisaRender

  • Credit: SlykDrako (CC0)
  • Converted from Tungsten version at Rendering Resources
  • Resolution: 1280x720
  • Samples: 65536
  • Tonemapping: Uncharted2

Bedroom

Camera

Download: LuisaRender

  • Credit: All resources in the scene are from Poly Heaven (CC0, see the contained README.txt for the detail of each resource)
  • Resolution: 3840x2160
  • Samples: 65536
  • Tonemapping: Uncharted2

Camera

Kitchen

Download: LuisaRender

Kitchen

Spaceship

Download: LuisaRender

  • Credit: thecali (CC0)
  • Converted from Tungsten version at Rendering Resources
  • Resolution: 1920x1080
  • Samples: 16384
  • Tonemapping: Uncharted2

Kitchen

Modern Hall

Download: LuisaRender

Staircase2

The Wooden Staircase

Download: LuisaRender

Staircase

Coffee Maker

Download: LuisaRender

Coffee

Japanese Classroom

Download: LuisaRender

Classroom

The Breakfast Room

Download: LuisaRender

Dining Room

The Grey & White Room

Download: LuisaRender

Living Room

The White Room

Download: LuisaRender

Living Room 2

The Modern Living Room

Download: LuisaRender

Living Room 3

Glass of Water

Download: LuisaRender

  • Credit: aXel (CC0)
  • Converted from Tungsten version at Rendering Resources
  • Resolution: 1920x1080
  • Samples: 16384
  • Tonemapping: Uncharted2

Glass of Water

Salle de bain

Download: LuisaRender

Salle de bain

Lone Monk

Download: LuisaRender

  • Credit: Carlo Bergonzini / Monorender (CC-BY)
  • Converted from Blender Cycles format at Blender Demo Files
  • Resolution: 6000x4000
  • Samples: 65536
  • Tonemapping: Uncharted2 (exposure = +1)

Lone Monk

Sky Texture Demo

Download: LuisaRender

  • Credit: Blender Studio (CC0)
  • Converted from Blender Cycles format at Blender Demo Files
  • Resolution: 3840x2160
  • Samples: 1024
  • Tonemapping: Uncharted2 (exposure = +1)

Sky Texture Demo

Bathroom Interior

Download: LuisaRender

Bathroom Interior

JINX!

Download: LuisaRender

JINX!

luisarender's People

Contributors

hercier avatar jczh98 avatar lastmc avatar maxwellgengyf avatar mike-leo-smith avatar oldnew777 avatar shiinamiyuki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

luisarender's Issues

ZipArchiveIOSystem.cpp:99:12: error: ‘voidpf’ does not name a type; did you mean ‘void’?

Hello,

there is another error when I execute the make command,

ZipArchiveIOSystem.cpp:99:12: error: ‘voidpf’ does not name a type; did you mean ‘void’?

[ 14%] Linking C shared module ../../../../../bin/liblc-hlsl-builtin.so
[ 14%] Built target luisa-compute-hlsl-builtin55: clang-sys, serde, typenum...
[ 14%] Building CXX object src/ext/tinyexr/code/CMakeFiles/assimp.dir/Geometry/GeometryUtils.cpp.o
[ 14%] Building CXX object src/ext/tinyexr/code/CMakeFiles/assimp.dir/Common/Base64.cpp.o
/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/code/Common/ZipArchiveIOSystem.cpp:99:12: error: ‘voidpf’ does not name a type; did you mean ‘void’?
   99 |     static voidpf open(voidpf opaque, const char *filename, int mode);
      |            ^~~~~~
      |            void
/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/code/Common/ZipArchiveIOSystem.cpp:100:12: error: ‘voidpf’ does not name a type; did you mean ‘void’?
  100 |     static voidpf opendisk(voidpf opaque, voidpf stream, uint32_t number_disk, int mode);
      |            ^~~~~~
      |            void
/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/code/Common/ZipArchiveIOSystem.cpp:101:12: error: ‘uLong’ does not name a type; did you mean ‘ulong’?
  101 |     static uLong read(voidpf opaque, voidpf stream, void *buf, uLong size);
      |            ^~~~~
      |            ulong

I searched the ‘voidpf’ in the whole directory and find it in

src/ext/tinyexr/deps/miniz/miniz.h,

So I added in the `ZipArchiveIOSystem.cpp:

#include <tinyexr/deps/miniz/miniz.h>

I tried to ignore that warning and execute make, the former error was gone but it shows:

[ 19%] Building CXX object src/ext/tinyexr/code/CMakeFiles/assimp.dir/PostProcessing/GenVertexNormalsProcess.cpp.o
In file included from /usr/local/include/minizip/mz_compat.h:16,
                 from /usr/local/include/minizip/unzip.h:10,
                 from /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/code/Common/ZipArchiveIOSystem.cpp:64:
/usr/local/include/minizip/mz.h:17: error: "MZ_VERSION" redefined [-Werror]
   17 | #define MZ_VERSION                      ("4.0.0")
      | 
In file included from /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/code/Common/ZipArchiveIOSystem.cpp:47:
/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/ext/assimp/../tinyexr/deps/miniz/miniz.h:278: note: this is the location of the previous definition
  278 | #define MZ_VERSION "11.0.2"
      | 
cc1plus: all warnings being treated as errors
make[2]: *** [src/ext/tinyexr/code/CMakeFiles/assimp.dir/build.make:216:src/ext/tinyexr/code/CMakeFiles/assimp.dir/Common/ZipArchiveIOSystem.cpp.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[1]: *** [CMakeFiles/Makefile2:1163:src/ext/tinyexr/code/CMakeFiles/assimp.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
warning: `luisa_compute_ir` (lib) generated 15 warnings (run `cargo fix --lib -p luisa_compute_ir` to apply 8 suggestions)
    Finished release [optimized] target(s) in 5.30s

it seems a conflict between two different versions of the MZ_VERSION macro in the "src/ext/tinyexr/deps/miniz/miniz.h" file and the
system header file.

So I checked the ZipArchiveIOSystem.cpp again and comment the #include line I added.
And I found the cause in

#ifdef ASSIMP_USE_HUNTER
    #include <minizip/unzip.h>
#else
    #include <unzip.h>

there's no minizip directory in the src directory and it subdirectories .

Should I download it myself or there's something wrong with my manipulation ?
Thanks!

Falling back to ad-hoc allocation

Describe the bug
When running, this warning shows on the output:
[warning] Failed to allocate x bytes from CUDAHostBufferPool. Falling back to ad-hoc allocation.

Expected behavior
Warning free I guess

Desktop (please complete the following information):

  • OS: Ubuntu 22.04
  • Driver: 535.113.01
  • CUDA version: 1.2.2
  • GPU: RTX 2080Ti

Additional context
Just curious why this warning appears

Is there a full version without "--recursive"?

When the network is unstable, "git clone --recursive" commands is likely to fail. Manually downloading these packages will take a lot of time. Can a full version be provided, with links to Baidu online disk or Google cloud disk?

Running "luisa-render-cli" on Windows prints / renders nothing, "luisa-render-cli.exe" works fine though.

I'm just going to throw in that I hope this renderer gets a USD frontend, it reminds me of Maxwell but I could only run that on a 4 core CPU when I had access.

Describe the bug
The title pretty much says it. Looks like it's identifying itself by name and needs the extension, but it's not common practice to type the extension of .exe files in Windows; scripts maybe, but not EXE

To Reproduce

  1. Build luisa with defaults
  2. Try to do anything (blank command line works) with luisa by using

>luisa-render-cli

  1. Observe that nothing is printed / done.
  2. Now run with .exe at the end.
  3. Everything works as expected, no issues rendering or printing help.

Expected behavior
Windows programs with executable extensions shouldn't need them typed in to run / identify themselves.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Windows 10 Pro Workstation
  • Running on a regular old NTFS drive, no junctions or symlinks or anything silly.

Additional context
You guys should submit this project to the Guiness book of world records as the first non-trivial open source project that actually builds correctly on Windows. I'm sure there are others, but anything which requires the ultra-hacky msys2 or cygwin because somebody is still using an archaic build system that doesn't have a native port because, well frankly gnu autotools is garbage to begin with, doesn't count, and that's pretty much everything.

CMake Generate step failed on MacOS 13.1(M1 Pro)

Describe the bug
I failed to configure the project on my Mac. I would appreciate your help. Thanks.

Environment:

  • OS: MacOS 13.1 with M1 Pro
  • cmake 3.25.1
  • clang 14.0.0
  • embree installed by brew

CMake log
-- The C compiler identification is AppleClang 14.0.0.14000029
-- The CXX compiler identification is AppleClang 14.0.0.14000029
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Could not find sccache
CMake Warning (dev) at src/ext/assimp/CMakeLists.txt:63 (OPTION):
Policy CMP0077 is not set: option() honors normal variables. Run "cmake
--help-policy CMP0077" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.

For compatibility with older versions of CMake, option is clearing the
normal variable 'BUILD_SHARED_LIBS'.
This warning is for project developers. Use -Wno-dev to suppress it.

-- Shared libraries enabled
-- compiling zlib from sources
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of off64_t
-- Check size of off64_t - failed
-- Looking for fseeko
-- Looking for fseeko - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Build an import-only version of Assimp.
INFO Hunter enabled or RT-extension not found. glTF import/export will be built without Open3DGC-compression.
-- Enabled importer formats: AMF 3DS AC ASE ASSBIN B3D BVH COLLADA DXF CSM HMP IRRMESH IQM IRR LWO LWS M3D MD2 MD3 MD5 MDC MDL NFF NDO OFF OBJ OGRE OPENGEX PLY MS3D COB BLEND IFC XGL FBX Q3D Q3BSP RAW SIB SMD STL TERRAGEN 3D X X3D GLTF 3MF MMD
-- Disabled importer formats:
-- Treating all warnings as errors (for assimp library only)
-- Could not find sccache
-- Build spdlog: 1.11.0
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Build type: Release
-- Using the multi-header code from /Users/why/Desktop/LuisaRender/src/compute/src/ext/json/include/
-- Found OpenGL: /Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/OpenGL.framework
-- Including Cocoa support
-- Performing Test EASTL_HAS_FCHAR8T_FLAG
-- Performing Test EASTL_HAS_FCHAR8T_FLAG - Success
-- Performing Test EASTL_HAS_ZCCHAR8T_FLAG
-- Performing Test EASTL_HAS_ZCCHAR8T_FLAG - Failed
-- Found embree: 3.13.5
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX17
-- Performing Test ABSL_INTERNAL_AT_LEAST_CXX17 - Success
-- Build with Metal backend
-- The OBJC compiler identification is AppleClang 14.0.0.14000029
-- Detecting OBJC compiler ABI info
-- Detecting OBJC compiler ABI info - done
-- Check for working OBJC compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- The OBJCXX compiler identification is AppleClang 14.0.0.14000029
-- Detecting OBJCXX compiler ABI info
-- Detecting OBJCXX compiler ABI info - done
-- Check for working OBJCXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Could not find nvcc, please set CUDAToolkit_ROOT.
-- Could NOT find LLVM (missing: LLVM_DIR)
CMake Warning at src/compute/src/backends/llvm/CMakeLists.txt:36 (message):
LLVM not found. LLVM backend will not be built.

-- Configuring done
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_OBJC_COMPILE_OBJECT
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_OBJC_COMPILE_OBJECT
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_OBJC_COMPILE_OBJECT
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_OBJC_COMPILE_OBJECT
CMake Error: Error required internal CMake variable not set, cmake may not be built correctly.
Missing variable is:
CMAKE_OBJC_COMPILE_OBJECT
-- Generating done
CMake Generate step failed. Build files cannot be regenerated correctly.

Save save GPT

Is your feature request related to a problem? Please describe.
GPT is broken😡😡😡 @Mike-Leo-Smith

Describe the solution you'd like
Fix it! 😡😡😡@Mike-Leo-Smith

Describe alternatives you've considered
There is no other way 😡😡😡

Additional context
😡😡😡

Dirac Delta handling

I might be wrong but it seems like specular is being handled by treating it simply as a highly glossy material instead of treating it as a dirac delta? Just want to confirm if this is the design choice.

error: could not compile `luisa_compute_backend_impl` due to 5 previous errors; [ 51%] Built target _cargo-build_luisa_compute_ir

**I try to build this project on Ubuntu 22.04.2, with cmake version 3.27.0-rc5, cuda version 11.7.99, clang version 16.0.0

and the hardwares of my PC :
CPU : Intel® Core™ i7-6700K CPU @ 4.00GHz × 8
GPU : NVIDIA Corporation GP104 [GeForce GTX 1070]

the cmake process is ok,**


`/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu$ cmake ../
-- Could not find sccache
-- Shared libraries enabled
-- Looking for ZLIB...
-- Checking for module 'zzip-zlib-config'
--   No package 'zzip-zlib-config' found
-- Found ZLIB: optimized;/usr/lib/x86_64-linux-gnu/libz.so;debug;/usr/lib/x86_64-linux-gnu/libz.so
-- Checking for module 'minizip'
--   Found minizip, version 1.2.8
-- Build an import-only version of Assimp.
-- Enabled importer formats: AMF 3DS AC ASE ASSBIN B3D BVH COLLADA DXF CSM HMP IRRMESH IQM IRR LWO LWS M3D MD2 MD3 MD5 MDC MDL NFF NDO OFF OBJ OGRE OPENGEX PLY MS3D COB BLEND IFC XGL FBX Q3D Q3BSP RAW SIB SMD STL TERRAGEN 3D X X3D GLTF 3MF MMD
-- Disabled importer formats:
-- Treating all warnings as errors (for assimp library only)
-- Could not find sccache
-- Build spdlog: 1.11.0
-- Build type: Release
-- Including X11 support
CMake Deprecation Warning at src/compute/src/ext/EASTL/packages/EABase/CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Rust Target: x86_64-unknown-linux-gnu
-- Using Corrosion as a subdirectory
-- Build with CUDA backend: 11.7.99
-- Downloading nvcomp from https://developer.download.nvidia.com/compute/nvcomp/2.6.1/local_installers/nvcomp_2.6.1_x86_64_11.x.tgz
-- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") 
-- Found nvcomp: /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/_deps/nvcomp-src/lib/cmake/nvcomp/nvcomp-config.cmake (found version "2.6.1") 
-- Configuring done (5.9s)
-- Generating done (1.6s)
-- Build files have been written to: `

but it present an error when executing make :

`warning: unused import: `SetLoggerError`
 --> luisa_compute_backend_impl/src/lib.rs:7:49
  |
7 | use log::{Level, LevelFilter, Metadata, Record, SetLoggerError};
  |                                                 ^^^^^^^^^^^^^^

warning: `luisa_compute_backend_impl` (lib) generated 11 warnings
**error: could not compile `luisa_compute_backend_impl` due to 5 previous errors; 1**1 warnings emitted
make[2]: *** [src/compute/src/rust/CMakeFiles/_cargo-build_luisa_compute_backend_impl.dir/build.make:70:src/compute/src/rust/CMakeFiles/_cargo-build_luisa_compute_backend_impl] 错误 101
make[1]: *** [CMakeFiles/Makefile2:1767:src/compute/src/rust/CMakeFiles/_cargo-build_luisa_compute_backend_impl.dir/all] 错误 2
make[1]: *** 正在等待未完成的任务....
   Compiling luisa_compute_ir v0.1.1-alpha.1 (/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/compute/src/rust/luisa_compute_ir)
   Compiling luisa_compute_api_types v0.1.1-alpha.1 (/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/compute/src/rust/luisa_compute_api_types)
   Compiling bincode v1.3.3
   Compiling serde_json v1.0.103
warning: unused import: `Deserialize`
 --> luisa_compute_ir/src/ffi.rs:8:13
  |
8 | use serde::{Deserialize, Serialize};
  |             ^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `std::ffi::CString`
 --> luisa_compute_ir/src/display.rs:6:5
`

and it ended here:


`326 |     fn construct(&self, value: Value, ty: CArc<Type>, builder: &mut IrBuilder) -> NodeRef {
    |        ^^^^^^^^^

warning: associated function `destruct` is never used
   --> luisa_compute_ir/src/transform/eval.rs:354:8
    |
354 |     fn destruct(&self, node: NodeRef, builder: &mut IrBuilder) -> Value {
    |        ^^^^^^^^

warning: `luisa_compute_ir` (lib) generated 27 warnings
    Finished release [optimized] target(s) in 3m 54s
Copying byproducts `libluisa_compute_ir.so` to /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin
[ 51%] Built target _cargo-build_luisa_compute_ir
make: *** [Makefile:136:all] 错误 2

`

and the 5 previous errors are:


`warning: `luisa_compute_backend` (lib) generated 10 warnings
   Compiling luisa_compute_backend_impl v0.1.0-alpha.1 (/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/compute/src/rust/luisa_compute_backend_impl)


**error: unknown x86 target feature: gfni**
   --> luisa_compute_backend_impl/src/cpu/llvm.rs:985:8
    |
985 |     if is_x86_feature_detected!("gfni") { features.push("gfni"); }
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: this error originates in the macro `is_x86_feature_detected` (in Nightly builds, run with -Z macro-backtrace for more info)

**error: unknown x86 target feature: vaes**
   --> luisa_compute_backend_impl/src/cpu/llvm.rs:986:8
    |
986 |     if is_x86_feature_detected!("vaes") { features.push("vaes"); }
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: this error originates in the macro `is_x86_feature_detected` (in Nightly builds, run with -Z macro-backtrace for more info)

**error: unknown x86 target feature: vpclmulqdq**
   --> luisa_compute_backend_impl/src/cpu/llvm.rs:987:8
    |
987 |     if is_x86_feature_detected!("vpclmulqdq") { features.push("vpclmulqdq"); }
    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: this error originates in the macro `is_x86_feature_detected` (in Nightly builds, run with -Z macro-backtrace for more info)

**error: unknown x86 target feature: movbe**
    --> luisa_compute_backend_impl/src/cpu/llvm.rs:1008:8
     |
1008 |     if is_x86_feature_detected!("movbe") { features.push("movbe"); }
     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: this error originates in the macro `is_x86_feature_detected` (in Nightly builds, run with -Z macro-backtrace for more info)

**error: unknown x86 target feature: ermsb**
    --> luisa_compute_backend_impl/src/cpu/llvm.rs:1009:8
     |
1009 |     if is_x86_feature_detected!("ermsb") { features.push("ermsb"); }
     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: this error originates in the macro `is_x86_feature_detected` (in Nightly builds, run with -Z macro-backtrace for more info)

warning: unused import: `cell::RefCell`
 --> luisa_compute_backend_impl/src/cpu/mod.rs:3:11
  |
3 | use std::{cell::RefCell, sync::Arc};
  |           ^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

`

**Does any one ever met this problem?

How should I do ?
Thanks a lot!**

-- Checking for module 'zzip-zlib-config' -- No package 'zzip-zlib-config' found

Hello Sir,

I'm trying to compile this project on ubuntu 22.04.2, with cuda 12.2 and optix 7.7, and using a intel 6700k cpu and gtx 1070 gpu.
I fixed some errors before by installing and updating the rust tool chain, and when I execute cmake, it was done with some warnings :

-- Shared libraries enabled
-- Looking for ZLIB...
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'zzip-zlib-config'
--   No package 'zzip-zlib-config' found
-- Found ZLIB: optimized;/usr/lib/x86_64-linux-gnu/libz.so;debug;/usr/lib/x86_64-linux-gnu/libz.so
-- Checking for module 'minizip'
--   Found minizip, version 4.0.0

I searched that warning on google and bing, and asked my gpt and it suggests me to execute :

sudo apt update
sudo apt install libzzip-dev

and I've done that already for several times and I'm sure the zlib was installed correctly.

the entire cmake log is as below:


uisaGroup/LuisaRender/LuisaRender/build_ubuntu# cmake ../
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Build with sccache: /root/.cargo/bin/sccache
-- Shared libraries enabled
-- Looking for ZLIB...
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'zzip-zlib-config'
--   No package 'zzip-zlib-config' found
-- Found ZLIB: optimized;/usr/lib/x86_64-linux-gnu/libz.so;debug;/usr/lib/x86_64-linux-gnu/libz.so
-- Checking for module 'minizip'
--   Found minizip, version 4.0.0
-- Build an import-only version of Assimp.
-- Enabled importer formats: AMF 3DS AC ASE ASSBIN B3D BVH COLLADA DXF CSM HMP IRRMESH IQM IRR LWO LWS M3D MD2 MD3 MD5 MDC MDL NFF NDO OFF OBJ OGRE OPENGEX PLY MS3D COB BLEND IFC XGL FBX Q3D Q3BSP RAW SIB SMD STL TERRAGEN 3D X X3D GLTF 3MF MMD
-- Disabled importer formats:
-- Treating all warnings as errors (for assimp library only)
CMake Warning at src/compute/scripts/validate_options.cmake:42 (message):
  The DirectX backend is not available.  The DirectX backend will be
  disabled.
Call Stack (most recent call first):
  src/compute/scripts/validate_options.cmake:51 (report_feature_not_available)
  src/compute/CMakeLists.txt:43 (include)


CMake Warning at src/compute/scripts/validate_options.cmake:42 (message):
  The Metal backend is not available.  The Metal backend will be disabled.
Call Stack (most recent call first):
  src/compute/scripts/validate_options.cmake:57 (report_feature_not_available)
  src/compute/CMakeLists.txt:43 (include)


-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Build with sccache: /root/.cargo/bin/sccache
-- Build spdlog: 1.11.0
-- Build type: Release
-- Including X11 support
-- Found X11: /usr/include   
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Performing Test EASTL_HAS_FCHAR8T_FLAG
-- Performing Test EASTL_HAS_FCHAR8T_FLAG - Success
-- Performing Test EASTL_HAS_ZCCHAR8T_FLAG
-- Performing Test EASTL_HAS_ZCCHAR8T_FLAG - Failed
CMake Deprecation Warning at src/compute/src/ext/EASTL/packages/EABase/CMakeLists.txt:4 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Rust Toolchain: stable-x86_64-unknown-linux-gnu
-- Rust Target: x86_64-unknown-linux-gnu
-- Determining required link libraries for target x86_64-unknown-linux-gnu
-- Required static libs for target x86_64-unknown-linux-gnu: gcc_s;util;rt;pthread;m;dl;c
-- Found Rust: /root/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rustc (found version "1.71.0") 
-- Using Corrosion as a subdirectory
-- Found Vulkan: /usr/lib/x86_64-linux-gnu/libvulkan.so (found version "1.3.250") found components: glslc glslangValidator 
-- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "12.2.91", minimum required is "11.7") 
-- Build with CUDA backend: 12.2.91
-- Downloading nvcomp from https://developer.download.nvidia.com/compute/nvcomp/2.6.1/local_installers/nvcomp_2.6.1_x86_64_12.x.tgz
-- Found CUDAToolkit: /usr/local/cuda/include (found version "12.2.91") 
-- Found nvcomp: /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/_deps/nvcomp-src/lib/cmake/nvcomp/nvcomp-config.cmake (found version "2.6.1") 
-- Configuring done (5.4s)
-- Generating done (1.8s)
-- Build files have been written to: /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu

and it didn't give more tips about that warning, so I'm really confused.......

How should I fixed that ? Thanks!

Allocation fail warnings with Metal backend

Hi!
During testing LuisaRender, the renderer printed memory allocation warnings
whenever I use Metal backend with the mega kernel setup.
The renderer does render the output image but I left the issue
since it may have some potential problems.

Regardless of setup (scenes or parameters,...), warnings are identical where it is
Failed to allocate 67108864 bytes from MetalHostBufferPool~.

I'm currently using Macbook pro Apple M1 Max with MacOS 13.3.

How to prevent recompiling kernel for randomized input?

Hello.

Currently, I'm rendering a large number of images using the aov integrator from randomized scenes with the CUDA backend. (I simply randomize camera and surface parameters, such as Kd, if it is a constant/vector value.) The results are as expected, and the rendering itself is extremely fast.

However, LuisaRender recompiles the ray tracing kernel for every randomized input (even though it has rendered the same scene but with different surface parameters). Due to the compilation overhead, the total overhead is increased drastically.

I want to remove or minimize this JIT compilation overhead (by reusing the compiled kernel). From my understanding, the generated code has different hashes because different constants (due to randomized material and camera nodes) are generated during dependency injection. This different hash causes a cache miss of the kernel.
I tried many ways to overcome the issue but no luck due to my short understanding of dependency injection.

Would you give me any comments or advice for the issue?
Any suggestions or advice would be appreciated.
Thanks!

Failed to build luisa-render-util due to std::endian

Describe the bug
I encounter a problem when I try to run the command cmake --build build to build the project. It seems to be a bug caused by c++20 compilation, but I am sure that my machine has a compiler (clang 14.0.0) that supports c++20 and is able to compile c++20 program.
What's more, I wrote the follwoing codes to test whether my compiler can work when using std::endian:

#include<iostream>
#include<bit>
using namespace std;
int main()
{
# if __cplusplus > 201703L
	cout << "c++20 ok\n";
	if constexpr (std::endian::native == std::endian::big)
        std::cout << "big-endian\n";
    else if constexpr (std::endian::native == std::endian::little)
        std::cout << "little-endian\n";
    else std::cout << "mixed-endian\n";
# endif
	return 0;
}

I got the following output which seemed to prove the compiler can work when using std::endian

c++20 ok
little-endian

I would very appreciate your help!

Environment

  • OS: MacOS 13.1 with M1 Pro
  • cmake 3.25.1
  • clang 14.0.0
  • embree installed by brew

Part of cmake logs

[ 72%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/sampling.cpp.o
[ 72%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/frame.cpp.o
[ 72%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/imageio.cpp.o
[ 72%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/xform.cpp.o
[ 72%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/spec.cpp.o
[ 73%] Building CXX object src/util/CMakeFiles/luisa-render-util.dir/half.cpp.o
/Users/why/Desktop/LuisaRender/src/util/half.cpp:12:19: error: no member named 'endian' in namespace 'std'; did you mean 'eastl::endian'?
    static_assert(std::endian::native == std::endian::little,
                  ^~~~~~~~~~~
                  eastl::endian
/Users/why/Desktop/LuisaRender/src/compute/src/ext/EASTL/include/EASTL/type_traits.h:1030:13: note: 'eastl::endian' declared here
        enum class endian
                   ^
/Users/why/Desktop/LuisaRender/src/util/half.cpp:12:42: error: no member named 'endian' in namespace 'std'; did you mean 'eastl::endian'?
    static_assert(std::endian::native == std::endian::little,
                                         ^~~~~~~~~~~
                                         eastl::endian
/Users/why/Desktop/LuisaRender/src/compute/src/ext/EASTL/include/EASTL/type_traits.h:1030:13: note: 'eastl::endian' declared here
        enum class endian
                   ^
2 errors generated.
make[2]: *** [src/util/CMakeFiles/luisa-render-util.dir/half.cpp.o] Error 1
make[1]: *** [src/util/CMakeFiles/luisa-render-util.dir/all] Error 2
make: *** [all] Error 2

Additional
Also, when Linking CXX shared library ../libembree3.dylib, it report a lot of warnings like:

ld: warning: cannot export hidden symbol void embree::TaskScheduler::g_instance from ../libtasking.a(taskschedulerinternal.cpp.o)

I have no idea if this will have a bad influence in future running.

Dispatch refactor of materials/lights/... for shorter shader compilation time

Now the dispatch code will generate closure codes for each surface instance, even if some of the instances have the same surface type. And this feature brings long shader compilation time and long generated code length for complex scenes.

We are trying to refactor these codes to separate data dispatch and function dispatch.

Windows build fails with type inference errors in aov.cpp and gpt.cpp due to return type of camera->film()->node()->exposure();

Greetings, just tried to build trunk and got some error spew with lots of "No matching argument type found for exp2(exposure) in aov.cpp / gpt.cpp"

I'm targeting Windows 10 x64, Visual Studio Version 17.9.5 CUDA toolkit 12.4 rev 1 with CUDA & DX backends enabled, I think I managed to get vulkan in there too for gui this time, was having trouble with that before. Cleaned cmake cache and build tree as usual.

After digging around, it looks like both are directly traceable to the same function calls directly previous:
auto exposure = camera->film()->node()->exposure();
which returns a luisa:float3
For whatever reason (maybe intentional) this cannot be auto-inferred as the luisa:compute:dsl:Float3 (luisa:compute:dsl:Vector<Float, 3>) type exp2 wants, and fails the is_dsl_v constraint check on the luisa:compute:dsl:exp2 template, which causes a bunch of extraneous error spew from following auto-deduced types that can't decide what they are.

I was able to get it to build by explicitly specifying the type of "exposure" as luisa:compute:dsl:Float3 so I'd assume the two are compatible and there was just no implicit operator, but since one is in the DSL namespace and wasn't selected and I haven't dug into how that is determined I'm concerned that just returning that type might not be safe or I'd make a pull request myself but if it's fine to convert between those two types in that context from a DSL standpoint the fix should probably just be changing the return type on the exposure() method unless the issue is that exposure() is supposed to be DSL-wrapped code.

In my experience GCC (and Clang on linux for compatibility reasons) have always had somewhat "sloppier" type matching for auto that's more willing to hop namespaces looking for matches so I'm guessing this wouldn't show up on non-Windows builds (or might be a warning not shown since the default build isn't -Wall AFAICT).

I'm going to test the build and see if anything explodes at runtime but hopefully this is enough info for you to take a look at it in the meantime

Is there any documentation for this project?

I want to implement an environment camera or a fisheye camera model under LuisaRender, but I am confused about the camera model of LuisaRender.
So I want to ask for a documentation of the camera model (I have already read pbrt documentation but LuisaRender seems a bit different), or some advice for me to implement a new camera model.
Thanks for your help!

[error] CUDA_ERROR_OUT_OF_MEMORY: out of memory

Hello,

I've update all the code to the latest version and re-compiled it this morning,

I tried to render a picture using the command:

bin/luisa-render-cli -b cuda ../../scenes/spaceship/spaceship/scene.luisa

but it gave an error again:

[2023-08-01 10:28:19.473] [console] [error] CUDA_ERROR_OUT_OF_MEMORY: out of memory [/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/compute/src/backends/cuda/cuda_buffer.cpp:9]
     0 [0x000000000000]:  ::  + 0
     1 [0x000000000000]:  ::  + 0
     2 [0x000000000000]:  ::  + 0
     3 [0x000000000000]:  ::  + 0
     4 [0x000000000000]:  ::  + 0
     5 [0x000000000000]:  ::  + 0
     6 [0x000000000000]:  ::  + 0
     7 [0x000000000000]:  ::  + 0
     8 [0x000000000000]:  ::  + 0
     9 [0x000000000000]:  ::  + 0
    10 [0x000000000000]:  ::  + 0
    11 [0x000000000000]:  ::  + 0
    12 [0x000000000000]:  ::  + 0
已放弃 (核心已转储)

and

[2023-08-01 16:53:30.057] [console] [warning] Logs from OptiX (ACCEL): Error launching command list (CUDA error string: out of memory, CUDA error code: 2)
Failed to build acceleration structure
[2023-08-01 16:53:30.067] [console] [error] OPTIX_ERROR_DEVICE_OUT_OF_MEMORY: Device out of memory [/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/compute/src/backends/cuda/cuda_accel.cpp:71]
     0 [0x000000000000]:  ::  + 0
     1 [0x000000000000]:  ::  + 0
     2 [0x000000000000]:  ::  + 0
     3 [0x000000000000]:  ::  + 0
     4 [0x000000000000]:  ::  + 0
     5 [0x000000000000]:  ::  + 0
     6 [0x000000000000]:  ::  + 0
     7 [0x000000000000]:  ::  + 0
     8 [0x000000000000]:  ::  + 0
     9 [0x000000000000]:  ::  + 0
    10 [0x000000000000]:  ::  + 0
    11 [0x000000000000]:  ::  + 0
    12 [0x000000000000]:  ::  + 0
    13 [0x000000000000]:  ::  + 0
    14 [0x000000000000]:  ::  + 0
    15 [0x000000000000]:  ::  + 0
    16 [0x000000000000]:  ::  + 0
    17 [0x000000000000]:  ::  + 0
    18 [0x000000000000]:  ::  + 0
已放弃 (核心已转储)

My video card is GTX 1070, with CUDA version "12.2.91, on ubuntu 22.04.2.
How could I fixed that ? Thank you!

Is it production-ready renderer?

Describe the bug
N/A

To Reproduce
Steps to reproduce the behavior:
N/A

Expected behavior
Hi. Is it production-ready renderer or just test-lab-based? If prod-based so where can I download it and any doc?

Shader 'kernel_73b038d546fe000a.ptx' is not found in cache. The shader will be recompiled.

Hello,
finally the compiling succeeded, and I tried some scenes that downloaded from

https://github.com/LuisaGroup/LuisaRenderScenes/releases/tag/scenes

and I input the commands below with several different scenes,

github/LuisaGroup/LuisaRender/LuisaRender# build_ubuntu/bin/luisa-render-cli -b cuda scenes/spaceship/spaceship/scene.luisa

but it always give some warnings :

[2023-07-28 00:25:34.306] [console] [warning] Invalid texture coordinates in mesh '/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/scenes/spaceship/spaceship/models/Mesh050.obj': address = 0x0, components = 0. [/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/src/shapes/mesh.cpp:96]
[2023-07-28 00:25:34.306] [console] [info] Loaded triangle mesh '/media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/scenes/spaceship/spaceship/models/Mesh050.obj' in 56.093821999999996 ms.

and errors:


[2023-07-28 00:26:32.793] [console] [info] Computed accel memory usage in 0.0043809999999999995 ms: temp = 5760, temp_update = 0, output = 18816.
[2023-07-28 00:26:32.795] [console] [info] CUDAAccel compaction: before = 18816B, after = 17920B, ratio = 0.9523809523809523.
[2023-07-28 00:26:32.796] [console] [info] Created pipeline with 1 camera(s), 90 shape instance(s), 10 surface instance(s), and 4 light instance(s).
[2023-07-28 00:26:32.796] [console] [info] Wavefront path tracing configurations: resolution = 1920x1080, spp = 16384, state_count = 33177600, samples_per_pass = 16.
[2023-07-28 00:26:32.818] [console] [info] Compiling ray generation kernel.
[2023-07-28 00:26:32.820] [console] [info] Compiling intersection kernel.
[2023-07-28 00:26:32.821] [console] [info] Compiling environment evaluation kernel.
[2023-07-28 00:26:32.821] [console] [info] Generated CUDA source in 0.251282 ms.
[2023-07-28 00:26:32.821] [console] [info] Generated CUDA source in 0.759776 ms.
[2023-07-28 00:26:32.821] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_73b038d546fe000a.ptx failed.
[2023-07-28 00:26:32.821] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_b037032d8023c793.ptx failed.
[2023-07-28 00:26:32.821] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_73b038d546fe000a.ptx.metadata failed.
[2023-07-28 00:26:32.821] [console] [info] Shader 'kernel_73b038d546fe000a.ptx' is not found in cache. The shader will be recompiled.
[2023-07-28 00:26:32.821] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_b037032d8023c793.ptx.metadata failed.
[2023-07-28 00:26:32.821] [console] [info] Shader 'kernel_b037032d8023c793.ptx' is not found in cache. The shader will be recompiled.
[2023-07-28 00:26:32.822] [console] [info] Compiling light evaluation kernel.
[2023-07-28 00:26:32.823] [console] [info] Generated CUDA source in 0.64557 ms.
[2023-07-28 00:26:32.823] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_76297bf4429dae81.ptx failed.
[2023-07-28 00:26:32.824] [console] [info] Read file /media/liusheng/Projects/project/game_engines/LuisaRender/github/LuisaGroup/LuisaRender/LuisaRender/build_ubuntu/bin/.cache/kernel_76297bf4429dae81.ptx.metadata failed.
[2023-07-28 00:26:32.824] [console] [info] Shader 'kernel_76297bf4429dae81.ptx' is not found in cache. The shader will be recompiled.
[2023-07-28 00:26:32.824] [console] [info] Compiling light sampling kernel.
段错误 (核心已转储)

So, is the command I used wrong ? or is there anything else should I do ?
I used this renderer right away after it was compiled successfully, so why it says the .ptx files not found in cache ?
Thanks so much!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.