# Get to grips with ThreeJS Shading Language (TSL)

**URL:** <https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613>\
**Category:** Showcase\
**Tags:** tsl\
**Created:** [December 24, 2024, 4:06pm UTC](https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613 "2024-12-24T16:06:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nik](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/nik/32/52246_2.png) [@Nik](https://discourse.threejs.org/u/Nik)\
**Post date:** [December 24, 2024, 4:06pm UTC](https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613/1 "2024-12-24T16:06:06Z")

</div>

I’ve been creating a series of articles giving advice on using TSL. Since there is so little documentation for TSL available I hope this helps.  
[https://niklever.com/getting-to-grips-with-threejs-shading-language-tsl/](https://niklever.com/getting-to-grips-with-threejs-shading-language-tsl/)

[![](https://img.youtube.com/vi/7lw_YQ9qs7I/maxresdefault.jpg "ThreeJS TSL Flocking") ](https://www.youtube.com/watch?v=7lw_YQ9qs7I)

---

<div class="post-metadata">

**Author:** ![PavelBoytchev](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/pavelboytchev/32/38639_2.png) [@PavelBoytchev](https://discourse.threejs.org/u/PavelBoytchev)\
**Post date:** [December 24, 2024, 4:28pm UTC](https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613/2 "2024-12-24T16:28:47Z")

</div>

These lessons are quite useful for learning TSL and gaining some hands-on and brain-on skills. Thanks for posting them (and thanks for mentioning TSL textures).

---

<div class="post-metadata">

**Author:** ![LordWellingtonIII](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/lordwellingtoniii/32/61735_2.png) [@LordWellingtonIII](https://discourse.threejs.org/u/LordWellingtonIII)\
**Post date:** [May 29, 2025, 6:52pm UTC](https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613/3 "2025-05-29T18:52:51Z")

</div>

Really cool demo.

I have an NVIDIA RTX 2080 Mobile and (after enabling “Unsafe WebGPU Support” in Chrome), the CodePen runs at about 1 FPS. This is not a criticism but me looking for understanding on why this might be, since it seems quite odd to me. I’m on Linux and it’s possible it could to the fact that I’m using Wayland w/ NVIDIA.

I want to use TSL but it seems quite unstable for a web app at the moment – some examples on [threejs.org](http://threejs.org) say I don’t have WebGPU support (in Brave, my primary browser, without adjusting browser flags) and others work fine (all using TSL).

I’m not sure what constitutes ‘unsafe’ WebGL code at this point exactly, or why your demo is deemed unsafe for Chrome, but I hope to be able to use TSL reliably (for customers of my web app) ASAP.

I appreciate the post. Thanks a lot.

---

<div class="post-metadata">

**Author:** ![Nik](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/nik/32/52246_2.png) [@Nik](https://discourse.threejs.org/u/Nik)\
**Post date:** [June 1, 2025, 6:17am UTC](https://discourse.threejs.org/t/get-to-grips-with-threejs-shading-language-tsl/75613/4 "2025-06-01T06:17:55Z")

</div>

Does this help [Reddit - The heart of the internet](https://www.reddit.com/r/webgpu/comments/1ii3tgo/whats_taking_so_long_for_webgpu_to_available_on/)
