---
title: "Blog - AlvaroSabu"
description: "Articles on web development, 3D on the web, WebGPU, shaders, Vue.js, and TresJS."
canonical_url: "https://alvarosabu.dev/blog/"
meta:
  "og:description": "Articles on web development, 3D on the web, WebGPU, shaders, Vue.js, and TresJS."
  "og:image": "https://alvarosabu.dev/blog-og.png"
  "og:image:alt": "Alvaro Saburido's Blog"
  "og:title": Blog
  "twitter:description": "Articles on web development, 3D on the web, WebGPU, shaders, Vue.js, and TresJS."
  "twitter:image": "https://alvarosabu.dev/blog-og.png"
  "twitter:image:alt": "Alvaro Saburido's Blog"
  "twitter:title": Blog
---

> Index of every page on this site: [llms.txt](https://alvarosabu.dev/llms.txt)

# **some thoughts**

[**Animating Grass with Wind in TSL 🌬️**](https://alvarosabu.dev/blog/animating-grass-with-wind-in-tsl)

[**Creating a Grass Field with TSL 🌱**](https://alvarosabu.dev/blog/creating-a-grass-field-with-tsl)

[**Creating a Ghost Shader with TSL**](https://alvarosabu.dev/blog/creating-a-ghost-shader-with-tsl)

[**Intro to TSL**](https://alvarosabu.dev/blog/intro-to-tsl)

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://alvarosabu.dev/#website","@type":"WebSite","description":"Creative Software Engineer. Author of TresJS.","name":"AlvaroSabu","url":"https://alvarosabu.dev/","publisher":{"@id":"https://alvarosabu.dev/#identity"}},{"@id":"https://alvarosabu.dev/blog/#webpage","@type":"WebPage","description":"Articles on web development, 3D on the web, WebGPU, shaders, Vue.js, and TresJS.","name":"Blog","url":"https://alvarosabu.dev/blog/","isPartOf":{"@id":"https://alvarosabu.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://alvarosabu.dev/blog/"]}]},{"@id":"https://alvarosabu.dev/#identity","@type":"Person","description":"Creative Software Engineer, open source mantainer, keynote speaker and author of TresJS.","email":"mailto:hola@alvarosaburido.dev","jobTitle":"Senior Software Engineer","name":"Alvaro Saburido","url":"https://alvarosabu.dev","alumniOf":{"@type":"CollegeOrUniversity","name":"Universidad Católica Andrés Bello","url":"https://ucab.edu.ve"},"hasCredential":{"@type":"EducationalOccupationalCredential","name":"Bachelor of Telecommunications Engineering","credentialCategory":"BachelorDegree","credentialName":"Bachelor of Telecommunications Engineering","credentialDescription":"Bachelor of Telecommunications Engineering","credentialUrl":"https://ucab.edu.ve","credentialIssuer":{"@type":"Organization","name":"Universidad Católica Andrés Bello","url":"https://ucab.edu.ve"}},"homeLocation":{"@type":"Place","name":"Spain","address":{"@type":"PostalAddress","addressCountry":"ES","addressRegion":"Barcelona"}},"image":{"@id":"https://alvarosabu.dev/#/schema/image/1"},"knowsAbout":["Vue.js","Nuxt","JavaScript","TypeScript","Open Source","Three.js","WebGPU","WebGL"],"memberOf":{"@type":"Organization","name":"TresJS","url":"https://tresjs.org"},"sameAs":["https://github.com/alvarosabu","https://x.com/alvarosabu","https://linkedin.com/in/alvarosaburido","https://bsky.app/profile/alvarosabu.dev"],"worksFor":{"@type":"Organization","name":"Directus","url":"https://directus.com"}},{"@id":"https://alvarosabu.dev/#/schema/image/1","@type":"ImageObject","contentUrl":"https://alvarosabu.dev/avatar.png","inLanguage":"en","url":"https://alvarosabu.dev/avatar.png"}]}
```

## Sitemap

See the full [sitemap](https://alvarosabu.dev/sitemap.md) for all pages.
