RSSAmplifier

Blog

Alexander Ameye

Personal internet space of Alexander Ameye. Writing notes about Unity, gamedev, graphics programming and occasionally other things.

ameye.devRSS feed ↗18 posts

Latest posts

Screen Space Cavity Shader

Jump to heading # Installation Guide You can download Screen Space Cavity Shader from the Unity Asset Store. https://assetstore.unity.com/screen-space-cavity Jump to heading ## Installing, updating and removing the package After having obtained a license, the Screen Space Cavity Shader package can be installed through Unity's package manager ( Window > Package Manager ). To update, see…

The easiest way to render an outline in Unity

Jump to heading # Introduction When using the Unity game engine, most developers will at some point want to render an outline. I wanted to share the easiest way to render an outline (that I know of) that produces decent results. This method I will share requires no knowledge about custom render passes. There is no custom C# code, just existing Unity features and a single outline shader. 🖍️…

Edge Detection Outlines

💡 This tutorial is made for Unity 6 or Unity 2022.3+ and the Universal Render Pipeline. Jump to heading # Introduction Edge detection outlines have been commonly used in multiple games over the past years. They add a comic-book-like style to the scene which many game developers are after. Mars First Logistics. Rollerdrome. In this tutorial, I will show you how to set up an edge detection shader…

A cursor for augmented reality

Jump to heading # Introduction A few years ago I was working on a mobile augmented reality application where users were able to use their phone to place objects within the environment. To help them with this, there was a 3D reticle visible on the screen that reacted to the environment. There are several key components that needed to be brought together to create a smooth experience. I will go over…

Render adventures 2: progress!

Jump to heading # In the last episode of ... In my previous post , I talked about how I created a physically-based CPU path tracer in Rust from scratch. It was a good start, but one of the limiting factors while developing it was iteration speed. Each time I modified the scene or changed some parameters, I had to wait a few seconds or minutes for it to generate a result and then look at the image…

How this site works

Jump to heading # How this site works Over the years, I've reworked this site multiple times. Some of the technologies I have used have changed over the years, but this is the current stack. 📄 github-pages for free hosting ⚙️ 11ty for static site generation 🐐 goatcounter for lightweight analytics 💎 giscus for comments 📐 katex for math rendering 🫶 vanilla html and css for all the rest 🚀…

Circular menus in the Unity Editor

Jump to heading # Introduction This weekend I was working in Blender and noticed their easy to use circular menu. By pressing a button, the menu appears and then by pointing your mouse in a direction, you can select one of the options. Pie menu in Blender. Jump to heading # Circular menu + Unity Editor = ⚡ Using UI Toolkit and the new Vector API I added a circular menu to the Unity Editor. I…

Stylized Water Shader

Jump to heading # Introduction In this tutorial I will explain step-by-step how to create a beautiful stylized water shader in Unity using Shader Graph. The goal is not to create a physically accurate result, but rather to achieve a real-time, controllable and good-looking stylized water shader. Jump to heading # 1. Initial set up ⚠️ This tutorial has been made with Unity 2022.2.6f1 and Universal…

Comic book (halftone) shader

Jump to heading # Introduction A while ago, I made a shader for a project of mine to simulate halftone shading . This note quickly explains how I created the effect. Jump to heading # Creating a dots pattern To start, I created a Dots Pattern subgraph to create the actual grid of dots. This subgraph contains the following nodes. Dots pattern subgraph. The dots pattern is created using a Voronoi…

Render adventures 1: first steps

Some renders made with my path tracer. Jump to heading # First Steps As so many people out there that want to get into writing a raytracer, I started with raytracing in one weekend . I can 100% recommend this as a starting point, even if you are not familiar with ray tracing at all. While there exists a second and a third book, I started diverging after the first book and ended up using the later…

Sampling the hemisphere

Jump to heading # Introduction Generating samples within a hemisphere around a point is needed when doing Monte-Carlo path tracing. These samples can be chosen in a smart way, to be proportional to the BRDF. The following sections explain how to generate these samples, and how to properly weight them using the pdf, for several BRDF models. The result of importance sampling can be a significant…

Writing a chess engine in C++

Jump to heading # Introduction For a university course this semester we had to write a chess engine in C++. I'm not a chess player and was only familiar with the most basic chess rules so this was quite a challenge. Below is a video of my engine winning a game during a chess tournament (playing as white). Jump to heading # Board representation In my chess engine, a board gets represented using…

Rendering realtime caustics

Jump to heading # Introduction I will go over my method of rendering real-time caustics . The goal is not to generate a physically accurate result, but rather to achieve real-time, controllable, good-looking water caustics effects. A good way of working with caustics is by creating caustics volumes . Essentially we create a volume, and position it where the caustics should show up in our scene.…

5 ways to draw an outline

Jump to heading # Introduction Rendering outlines is a technique that is often used in games either for aesthetic reasons or for supporting gameplay by using it for highlights and selections around an object. For example in the game Sable, outlines are used to create a comic-book-like style. In The Last of Us, outlines are used to highlight enemies when the player goes into stealth mode. Sable.…

Custom render passes in Unity

Jump to heading # Introduction Since the introduction of Unity's Scriptable Render Pipeline in 2018, you can create your own custom render passes and inject them into the render pipeline. Since the documentation on them is still lacking, I created this basic template pass that could function as boilerplate code for your own passes and effects. The code is heavily commented for those who want…

Stylized Water for URP

Jump to heading # Introduction During the few months between November 2019 and April 2020 I created a stylized water shader for the Universal Render Pipeline and published it on the Unity Asset Store. The asset was received positively with 94% five star reviews and the asset was even nominated for the best artistic tool in the Unity Awards 2020 . Jump to heading # Features The shader is packed…

Shader tutorials in 60 seconds

Jump to heading # Introduction In the first few months of 2020 I created three 60-second shader tutorials . These tutorials were meant to be quick, to-the-point and dense in information. Jump to heading # Stylized Water Shader A simple but effective water shader that creates an interesting stylized look. The shader uses the depth buffer for coloring and generating foam. Refraction is added by…

Holographic Card Shader

Jump to heading # Introduction A short breakdown of how I made a holographic card shader . The goal was to do as much as possible in the shader itself without relying on any textures. I ended up using a single 3D model for the Pokémon and a single texture for the text. The design of the card was inspired by Rob Fichman 's work. The 3D model of the Cosmog Pokémon was created by AlmondFeather on…