Latest posts
NervLand: Implementing the DeepWater Ocean model from Proland
In my recent work on implementing the DeepWater Ocean model from Proland, I encountered various challenges and made significant progress. Initially, I created a basic DeepWaterModel class and implemented support for generating specific spectra. As I delved deeper, I faced errors related to texture usage and format compatibility.
Despite some setbacks, I debugged my initial implementation, improving code efficiency and fixing errors. I also experimented with building dependencies like glew and glut from sources to enhance the project. Along the way, I recompiled demo apps and investigated issues with FFT computation and mipmap generation.
NervLand: Equirectangular projection updated in WGSL
In this post I provide a simple update I made on the equirectangular projection shader for usage in my NervLand engine. Check the youtube video for more details 😎!
NervLand: Precomputed Atmospheric Scattering Unit tests
End of last year I completed the initial port of the Precomputed Atmospheric Scattering algorithm in my WebGPU engine. But considering the complexity of this algorithm, before I even try to use it in a scene I feel I should really build some robust unit tests to validated all the computation steps. So this will be our goal here.
Python project: Face tracking in video
Lately, I've been trying to improve a bit on the quality of the videos I'm adding on my youtube channel. As part of this process I'm now using filmora to edit the video rushes, and adding a circular mask and border on my webcam view. Yet, this process is very tedious and time consumming. So the idea I have here is to try to automate this using tools such as moviepy and opencv for instance. Not sure yet the results will be correct, but I should try it anyway.
NervLand DevLog #32: Working our way to display Proland terrains
In this article, we resume our work on the proland integration, focusing on getting a first tile producer to work on top of our TerrainNode (ie. the Elevation Producer). This was definitely a critical stage, and this took a significant effort to get the first version working. And unfortunately, towards the end of the article I stopped taking notes on what I was doing since I was really burning my head on really tricky stuff. But anyway, we will resume this in the next devlog session .
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 .
Blog History
2024
March
- 21 - NervLand: Adding support to perform timestamp queries
- 03 - NervLand: Implementing the DeepWater Ocean model from Proland
- 03 - NervLand: Equirectangular projection updated in WGSL
January
- 18 - NervLand: Precomputed Atmospheric Scattering Unit tests
- 05 - Python project: Face tracking in video
2023
October
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