# Enno Games > Enno Games is the one-person game studio of Daniel Phillips, a game developer > and 3D artist. It makes GPU Grass, a Unity asset that renders grass and foliage > entirely on the GPU, and Sky Fleet, a co-op top-down shooter and city-building > game released on Steam in December 2021. Daniel Phillips has over 20 years in game development as an environment and prop artist, with credits including Halo Reach, Halo 4, Halo 5, Halo Infinite, Forza Motorsport 4, Republique, and Deadliest Catch: Alaskan Storm. The blog covers Unity shader and job-system techniques, Blender geometry nodes, Maya MEL scripting, and game engine programming. All content is written by Daniel Phillips. Citation and quotation are welcome; please link back to the source URL. ## Products - [GPU Grass](https://ennogames.com/gpu-grass): Unity asset that replaces Unity's terrain detail system, placing and rendering grass and foliage entirely on the GPU. $40 on the Unity Asset Store. Requires Unity 2021.3.28f1 or newer and the Universal Render Pipeline (URP). - [GPU Grass on the Unity Asset Store](https://assetstore.unity.com/packages/tools/terrain/gpu-grass-227983): Where to buy GPU Grass. - [Sky Fleet](https://ennogames.com/skyfleet): Co-op top-down shooter and city-building game. Gather resources, build a city in the clouds, upgrade your ship and destroy the drone bases. Released on Steam in December 2021. ## GPU Grass documentation - [What is GPU Grass](https://ennogames.com/gpu-grass/what-is-gpu-grass): What the asset does and why it was built. - [How it Works](https://ennogames.com/gpu-grass/how-it-works): The per-terrain masks and the GPU placement and rendering pipeline. - [Performance](https://ennogames.com/gpu-grass/peformance): Measured CPU cost and how to make it faster. (Note: the URL is misspelled "peformance".) - [Features](https://ennogames.com/gpu-grass/features): Full feature list — LODs, wind, view bending, blue-noise placement, terrain holes. - [Limitations](https://ennogames.com/gpu-grass/limitations): What GPU Grass does not do. - [Installation](https://ennogames.com/gpu-grass/installation): Setup steps in Unity. - [Editor - Terrains](https://ennogames.com/gpu-grass/editor-terrains): Terrain list and mask settings. - [Editor - Foliage](https://ennogames.com/gpu-grass/editor-foliage): Per-object settings reference. - [Editor - Settings](https://ennogames.com/gpu-grass/editor-settings): Global manager settings. - [Support](https://ennogames.com/gpu-grass/support): How to get help. - [Disclaimer](https://ennogames.com/gpu-grass/disclaimer): Asset disclaimer. ## Technical writing - [Blender Geometry Nodes - Texel Density Modifier](https://ennogames.com/blog/blender-geometry-nodes-texel-density-modifier): A real-time texel density modifier built with geometry nodes. - [Blender Geometry Nodes - Auto UV Unwrap and Rotate Modifier](https://ennogames.com/blog/blender-geometry-nodes-auto-uv-unwrap-and-rotate-modifier): Unwrapping and rotating UV islands with geometry nodes. - [Should You Switch from Maya to Blender?](https://ennogames.com/blog/should-you-switch-from-maya-to-blender): Why a long-time Maya user switched to Blender. - [Why Rust and Bevy are awesome](https://ennogames.com/blog/why-rust-and-bevy-are-awesome): Impressions of the Rust language and the Bevy game engine. - [Creating Clouds for Sky Fleet](https://ennogames.com/blog/creating-clouds-for-sky-fleet): The cloud rendering approach used in Sky Fleet. - [Select Faces on Object by Material in Maya](https://ennogames.com/blog/select-faces-on-object-by-material-in-maya): A MEL script for selecting faces by assigned material. - [Give each vert a random vertex color script in Maya](https://ennogames.com/blog/give-each-vert-a-random-vertex-color-script-in-maya): A MEL script for randomizing vertex colors. - [Fade Opaque Object using Dithering](https://ennogames.com/blog/fade-opaque-object-using-dithering): Fading objects out without using transparency. - [Random Numbers inside Unity Jobs](https://ennogames.com/blog/random-numbers-inside-unity-jobs): Generating random numbers safely inside multithreaded Unity jobs. - [Frustum Culling with Unity Jobs](https://ennogames.com/blog/frustum-culling-with-unity-jobs): Testing bounding boxes against camera frustum planes in Unity's job system. - [3D and 2D Coordinates to 1D Indexes](https://ennogames.com/blog/3d-and-2d-coordinates-to-1d-indexes): Converting between coordinates and flat array indexes. - [Bilinear vs Bicubic Interpolation](https://ennogames.com/blog/bilinear-vs-bicubic-interpolation-and-how-to-get-height-of-terrain-in-unity-from-a-heightmap): Sampling between pixels and reading Unity terrain height from a heightmap. - [Building a Way Too Complicated Mailbox](https://ennogames.com/blog/building-a-way-too-complicated-mailbox): A woodworking and electronics project. - [Third Time is the Charm](https://ennogames.com/blog/third-time-is-the-charm): Notes on rewriting a project. - [Game Programming Links](https://ennogames.com/blog/game-programming-links): A collected list of game programming resources. ## Optional - [Blog index](https://ennogames.com/blog): All posts, newest first. - [Contact](https://ennogames.com/contact): Social and portfolio links. - [RSS feed](https://ennogames.com/rss.xml): Full-text feed of the blog. - [llms-full.txt](https://ennogames.com/llms-full.txt): Full plain text of every published page in one file.