Latest posts
NervLand DevLog #31: Adding support to display the DamagedHelmet PBR model
Hi everyone! Having a short break from ProLand this time: here we will rather get back to our PBR investigations and try to display the DamagegHelmet “standard GLTF” model in NervLand. As usual, we will hit some road blocks, but that never stopped us before, right 😉? So let's get to it and see how this goes!
NervLand DevLog #30: Initial study and design setup for Proland ElevationProducer
Hi! In this article, I'm mostly focusing on the ElevationProducer from ProLand: trying to understand how it works and how I should implement it in my own engine (replacing OpenGL with WebGPU in the process). Overall not an easy task to do, but I'm making some progress at least.
The structure of the article is actually a bit fuzzy, with ideas going in multiple directions, and unfortunately, this work is still not completed, since I eventually decided I should try and move to a compute pipeline implementation to perform the actual tile generation. So we end up preparing support for the ComputePass and ComputeNode classes, and will continue on this journey in our next episode .
NervLand DevLog #29: Introducing Proland core elements
In this new devlog session I'm mainly focusing on introduction some of the base elements required to integrate/refactor the Inria ProLand project into NervLand: a pretty tricky task so this will definitely take some good time, but we have to start soemwhere, right ?
In this process we will also cover some additional steps, like some improvements on the Scene Management system, introduction of the TaskGraph and Multithread scheduler subsystem, extensions on the LogManager to support multithreading with appropriate performances, and we will also review how to extract some frustum planes from an (almost) arbitrary transformation matrix! Let's get started 😎.
NervLand DevLog #28: Textured PBR workflow
Hello my friends! In this new episode, we continue with our experiments on PBR: now that we have introduced support for IBL in our workflow, the next step will be to load the metallic/roughness data from textures. And in this process we will also use a few additional textures for the Albedo, Normals and Ambient Occlusion maps: all these together should result in a pretty advanced rendering result, so I'm really excited to get this example on rails 🤩
NervLand DevLog #27: PBR Image based lighting
In this session we will add “image based lighting” from an hdr environment cubemap to the PBR equation, using the surrounding environment as the light source. This should add an even more realistic look the scene as the light contribution used by the materials is now controlled by the environment. In the process, we will also need to generate the BRDF 2D-LUT and irradiance and filtered cube maps from the environment map. Let's get started!
NervLand DevLog #26: Physically Based Rendering (PBR) initial implementation
Hey hey my dear friend! Welcome back for another episode on our NervLand world 😊! Last time, we introduced support for development GUIs with IMGUI in our engine, and now we are going to put that to use in this session while experimenting with physically based rendering implementation 👍! From what I read so far, writing a very minimal version of PBR should actually be no big deal: it's just a few custom shader functions in the end 🤔, So hopefully, not too much trouble ahead of us here ? Well, in theory at least… Let's see how this goes now!
NervLand DevLog #25: Introducing support for IMGUI
Hello hello! In our previous devlog article we introduced some “additional features” on the text rendering system I'm building in NervLand. One of the main interest when introducing such support for text rendering, if of course to get ready to builf some user interfaces, and eventually, I think I will get to this. But for this new episode, I'm rather going to try to take a shortcut for once, and figure out how to integrate IMGUI in our engine 😎!
From what I've read already, imgui should provide us with “backends” for both SDL2 and webgpu, which are exactly what we need, so, what go wrong really ?? 🤣🤣🤣
ThumbGen: New elements design and SVG generators
In this article we continue our journey on how to improve on our youtube thumbnail generation process.
Blog History
2023
September
- 21 - NervLand DevLog #31: Adding support to display the DamagedHelmet PBR model
- 16 - NervLand DevLog #30: Initial study and design setup for Proland ElevationProducer
- 06 - NervLand DevLog #29: Introducing Proland core elements
August
- 10 - NervLand DevLog #28: Textured PBR workflow
- 07 - NervLand DevLog #27: PBR Image based lighting
- 03 - NervLand DevLog #26: Physically Based Rendering (PBR) initial implementation
- 03 - NervLand DevLog #25: Introducing support for IMGUI
July
- 29 - ThumbGen: New elements design and SVG generators
- 28 - ThumbGen: Introducing drawsvg support
- 26 - NervLand DevLog #24: Extending support of text rendering
- 24 - ThumbGen: Adding support for background removal
- 22 - NervLand DevLog #23: Adding support for text rendering
- 19 - HomeCtrl: Re-designing app interface
- 14 - HomeCtrl: Considering compression with Brotli
- 13 - Working on WASM HomeCtrl implementation
- 10 - Trying to re-implement HomeCtrl android app with kivy
March
February
- 21 - NervLand: A simple camera implementation
- 21 - Quick journey with ffmpeg: improving audio stream with loudnorm
January
2022
December
November
- 26 - NervLand: LLVM JIT - Back to basics
- 16 - NervLand: Introducing support for push constants
- 11 - NervLand: Support to resize the window
- 09 - NervLand: Vertex buffers, bindings and attributes
- 04 - NervLand: Adding support of Vulkan Memory Allocator
- 04 - NervLuna: Continuing with VulkanApp restoring
October
September
August
July
- 22 - NervLand: Refreshing memory
- 10 - Arbitrage: Setting up arb monitoring on Aurora ?
- 06 - DeFi: Automating some claims
- 02 - NVP Framework: more cleanup and collecting transactions high level data
June
- 28 - NVP Framework clean up and consolidation
- 19 - Venturing into alternate blockchains: CELO network
- 15 - Crypto: adding support for ganache-cli
- 11 - Crypto: investigations around token pair checking system
- 02 - Crypto: Initial ArbitrageManager implementation
May
- 29 - Crypto: Collecting tokens and pairs from DEX
- 24 - Crypto: Computing EVM blockchain gas price statistics
- 22 - Crypto: Restoring automatic Linear Finance claims
- 20 - Solana study case: Withdrawing LPs from SunnyAG protocol
- 19 - NervProj: Finding & adding monitored coins
- 18 - Cryptoview: Restoring the charts panel
- 17 - Cryptoview: Restoring coins overview
- 14 - Quick project: Adding support for swimmingpool pump activation schedule [nodejs]
- 13 - Quick project: twitter api [python]
- 12 - Quick project: image processing tool [python]
- 10 - Quick project: filtering out corrupted gifs [python]
- 10 - NervProj: Restoring my crypto coins monitoring project
- 03 - NervProj: support for custom python env in scripts
- 02 - Fast Noise generation in python with FastNoise2
April
- 29 - Quick project: generating multiwords passwords - part 2 [python]
- 27 - NervProj: support for dedicated python env
- 25 - Quick project: translating text [python]
- 25 - Quick project: generating multiwords passwords [python]
- 23 - Quick project: Images overview generation [python]
- 22 - Quick project: File deduplication [python]
February
2021
June
- 23 - NervLuna: Adding support for custom class functions
- 14 - CryptoView: automatic charts update
- 12 - Pruning entries from SQlite database
- 07 - NervLuna: A first practical usage case - Part 2
- 04 - NervLuna: A first practical usage case - Part 1
2020
August
July
- 28 - NervLuna: Adding more input folders for nvCore bindings
- 13 - Building the new NervTech logo
- 09 - NervDraw: Building a RaphaëlJS rendering web app
- 07 - NervCode: Initial Virtual Keyboard display
- 01 - HomeCtrl: a touch of security
June
- 30 - Controlling our entrance gate from android app
- 23 - Building the basic FunctionObject
- 19 - NervLuna: generating bindings for nvCore - second run
- 18 - NervLuna: Handling C++ operators
- 17 - NervLuna: Fixing generated file names
- 15 - Generating bindings for the nvCore module
- 12 - NervCode: an innovating coding environment
- 10 - Support for const and static fields in NervLuna
- 09 - Adding support for fields inheritance in NervLuna
- 01 - Introducing NervLuna: the automatic C++/Lua binding generator
April
- 25 - JIT Compiler with LLVM - Part 5 - Bitcode, PCH, exceptions handling, module linking and more...
- 18 - JIT Compiler with LLVM - Part 4 - CRT dependency
- 16 - JIT Compiler with LLVM - Part 3 - Fixing the ModulePassManager crash
- 14 - JIT C++ compiler with LLVM - Part 2
- 10 - Dynamic C++ compilation with LLVM & clang
December
- 30 - Compilation ICU 65.1
2019
March
- 15 - Construction d'un cadre de lit
- 10 - Introduction to Deep Q-Networks
- 09 - Model-based policy networks
- 09 - Multi-actions vanilla policy Gradient
- 08 - Full policy Gradient agent for Reinforcement Learning
- 07 - Simple Policy gradient Training on armed bandit
- 05 - QNetwork learning
- 05 - Probabilistic QTable learning
- 04 - Simple QTable learning
February
January
- 12 - Using tensorflow queue system with CIFAR dataset
- 04 - SpinLock implementation in C++
- 03 - CIFAR-10 convolution network with batch normalization
- 02 - Recovering deleted GIT branch
- 01 - MNIST convolution network
2018
December
- 30 - MNIST Multilayer Perceptron network
- 30 - Simple MNIST Logistic regression
- 29 - Tensorflow setup - Second trial
- 28 - Upgrading Nvidia Drivers on Ubuntu
- 27 - Tensorflow install adventures
- 27 - String IDs in C++
2017
November
September
- 25 - Building Boost libraries for Android platform
- 24 - Cross-compile native mingw compilers for windows
- 21 - Setup Ragnarok map on ARK server
- 18 - Building Mingw64 compiler from sources on Linux
- 13 - Cross compiling C++ libraries for Android with CMake
- 08 - Crypto mining on solar panels
- 03 - Mon premier post