Latest posts
NervLand: A simple camera implementation
Hello world! Continuing our journey with vulkan I feel I'm now ready to build a dedicated “camera” class, and then figure out how to send user inputs to that camera: after all, all we really need here are the mouse events from the SDL window, right ? So, can't be that terrible to implement 🤣 Let's get started!
Quick journey with ffmpeg: improving audio stream with loudnorm
Hey hey! Tonight I feel like trying a very quick script generation: the goal will be to have an NVP command that I can use simply to renormalize the sound stream in a given input video file. This could be very handy to post-process my devlog recordings for instance.
NervLand: Drawing our first cube
OKay, so in this session, I want to turn my previous simple triangle display into a 3D cube. To achieve that I would like to start using an index buffer, and also introduce the minimal support required to handle an ortho projection, so that I could play a simple cube animation and see it rotating. This all sounds pretty easy said like this, but I'm sure I will find some trouble on my path, as usual 😆. So let's get started.
NervLuna: Simplifying manual bindings
In my last post I covered restoring the LLVM JIT compiler support in the NervLand project. That part seems to be working not too bad for now, but I realized that if I want to be able to dynamically inject new functions in the lua state then I need a more user friendly way to do it still using the Luna infrastructure, but with a mechanism a bit similar to what is done in the SOL library. So this will be the main topic that we will cover here. Let's get started [Spoiler alert: this is going to be a little tricky ]
NervLand: LLVM JIT - Back to basics
So in our previous post we were playing a bit with push constants, and came to the conclusion that using luajit over C++ to define dynamic behavior only introduced an about 5% performance penalty. Still, now I really feel like diving back into the LLVM JIT compiler implementation to check what has changed there since the last time I tried that 😁. And who knows, maybe I can easily reclaim that 5% hit in the end ? 😏
NervLand: Introducing support for push constants
Continuing our journey in vulkan, this time our target will be to introduce support for push constants in our command buffers. That sounds simple at first, but when I starting thinking about it, I realize it might not be that simple in fact. Let's check why…
NervLand: Support to resize the window
In our previous post, we implemented the support to use VertexBuffer objects to provide the vertex data we want to draw. This time we are going to do something completely different and focus instead on the support for resizing the main window of our application.
NervLand: Vertex buffers, bindings and attributes
In the last post, we introduced suppport for the Vulkan Memory Allocator to take care of our memory allocations. With this in place, we can now try to extend a bit on our display system and try to vertex buffers to provided the data we want to draw instead of hardcoding the value in our shader. And in this process we can start the design a subsystem to create various simple shapes like a plane, a cube, a sphere, etc.
<< Newer entries | Older entries >>
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