Julian's Avatar

Julian

@schneckerstein.bsky.social

-10x Code-Person @symmetrybreak.bsky.social Working on Misgiven and Tasty Grass Shader

375 Followers  |  426 Following  |  53 Posts  |  Joined: 19.08.2023  |  2.0147

Latest posts by schneckerstein.bsky.social on Bluesky

We're live! Super proud of this! :)

27.10.2025 20:34 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

Deep Fog Signalsโ€™ Steam page is live ๐Ÿ“ก
Stuck in an outpost in a sea of toxic fog, you're cut off from the outside world and oxygen is running out. Use scarce bandwidth to coordinate unstable crewmates, do research that could change the world and interpret strange signals from the deep ๐Ÿ‘๏ธ
#indiehorror

27.10.2025 18:22 โ€” ๐Ÿ‘ 34    ๐Ÿ” 12    ๐Ÿ’ฌ 6    ๐Ÿ“Œ 4

I'm at a.maze in berlin with my friends from @symmetrybreak.bsky.social. Anyone there too?

14.05.2025 18:26 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

But... I'm 30 and I love C?

05.04.2025 12:54 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
From the Unity3D community on Reddit: My story of developing a grass shader Explore this post and more from the Unity3D community

Hey y'all,
www.reddit.com/r/Unity3D/co...
did a write-up about Tasty Grass Shader over on Reddit :)

01.04.2025 16:01 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
A column of fire envelops an RV in a pine forest late at night.

A column of fire envelops an RV in a pine forest late at night.

My bedroom and office reduced to ashes. The metal walls and roof are largely destroyed, revealing the forest beyond.

My bedroom and office reduced to ashes. The metal walls and roof are largely destroyed, revealing the forest beyond.

A class C RV gutted by fire. The heat of the fire has killed most of the plant life in a nearby garden.

A class C RV gutted by fire. The heat of the fire has killed most of the plant life in a nearby garden.

A segment of an RV's exterior wall. The heat of the fire has melted through the aluminum panels.

A segment of an RV's exterior wall. The heat of the fire has melted through the aluminum panels.

An E-bike battery burned my house down on the first day of GDC. Seeking mutual aid from financially stable colleagues.
gofund.me/47306b15

19.03.2025 03:38 โ€” ๐Ÿ‘ 320    ๐Ÿ” 322    ๐Ÿ’ฌ 15    ๐Ÿ“Œ 15
Post image Post image

And on top:

Just because you got Volumetric Light, it doesn't mean that everything is shrouded by fog.

19.03.2025 10:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image Post image

The Half-Life 2 RTX looks fantastic, but could people PLEASE respect the original art direction?

Just because you have path tracing doesn't mean you crank all your lights by x10.

Just because you got PBR now doesn't mean all your surface should have 0.0 roughness.

19.03.2025 10:30 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

look at what we've been up to!

07.01.2025 17:45 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

endlich wieder twitter vibes hier

07.01.2025 17:40 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
#include <xmmintrin.h> 
void Distances_SIMD(void)
{
    float points_X_arr[] = {16.0f, 00.0f, 10.0f, 43.0f};
    float points_Y_arr[] = {00.0f, 16.0f, 10.0f, 08.0f};
    __m128 points_X = _mm_load_ps(points_X_arr);
    __m128 points_Y = _mm_load_ps(points_Y_arr);

    __m128 xSqr = _mm_mul_ps(points_X, points_X);
    __m128 ySqr = _mm_mul_ps(points_Y, points_Y); 
    __m128 length = _mm_sqrt_ps(_mm_add_ps(xSqr, ySqr));

    float lengths[4];
    _mm_store_ps(lengths, length);
    for(int i = 0; i < 4; i++){
      printf("Point = (%f,%f), Length = %f.\n", points_X_arr[i], points_Y_arr[i], length[i]);
    }
}

#include <xmmintrin.h> void Distances_SIMD(void) { float points_X_arr[] = {16.0f, 00.0f, 10.0f, 43.0f}; float points_Y_arr[] = {00.0f, 16.0f, 10.0f, 08.0f}; __m128 points_X = _mm_load_ps(points_X_arr); __m128 points_Y = _mm_load_ps(points_Y_arr); __m128 xSqr = _mm_mul_ps(points_X, points_X); __m128 ySqr = _mm_mul_ps(points_Y, points_Y); __m128 length = _mm_sqrt_ps(_mm_add_ps(xSqr, ySqr)); float lengths[4]; _mm_store_ps(lengths, length); for(int i = 0; i < 4; i++){ printf("Point = (%f,%f), Length = %f.\n", points_X_arr[i], points_Y_arr[i], length[i]); } }

This concept is of course possible with Vector2/3/x as well. Take this example, where I calculate the magnitude/length of four 2D points at once.

Keep in mind: I barely scratched the surface here of what's possible, not to mention that SEE1 came out in 1999.

Happy Coding!

(5/5)

03.01.2025 14:30 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Now for thinking as SIMD as "multiple things at once" the code would look like this.

The key is here that we batched multiple calculation together, processing 4 circles at once.

(4/5)

03.01.2025 14:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
void CircleArea_SIMD(void)
{
  float circlesRadii[] = {1.0f, 2.0f, 0.5f, 4.0f};
  __m128 circlesRadius = _mm_load_ps(circlesRadii);

  const float pi = 3.141f;
  __m128 pi_wide = _mm_load_ps1(&pi);
  // caluclate: pi * radius * radius, but for 4 radii at once.
  __m128 areas =  _mm_mul_ps(pi_wide, _mm_mul_ps(circlesRadius, circlesRadius));
  
  float areaScalar[4];
  _mm_store_ps(areaScalar, areas);
  for(int i = 0; i < 4; i++){
    printf("Radius = %f, Area = %f.\n", circlesRadii[i], areaScalar[i]);
  }
}

void CircleArea_SIMD(void) { float circlesRadii[] = {1.0f, 2.0f, 0.5f, 4.0f}; __m128 circlesRadius = _mm_load_ps(circlesRadii); const float pi = 3.141f; __m128 pi_wide = _mm_load_ps1(&pi); // caluclate: pi * radius * radius, but for 4 radii at once. __m128 areas = _mm_mul_ps(pi_wide, _mm_mul_ps(circlesRadius, circlesRadius)); float areaScalar[4]; _mm_store_ps(areaScalar, areas); for(int i = 0; i < 4; i++){ printf("Radius = %f, Area = %f.\n", circlesRadii[i], areaScalar[i]); } }

Instead, you have to think about SIMD as processing multiple items at a once. For example: you have a list of circles and want to calculate their area. The basic version would process one circle at the time.

With thinking of SIMD as "fast Vector4" there would be no room for improvement. (3/5)

03.01.2025 14:30 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

The key point is that many people get the *impression* that these wide SIMD vectors, like __m128 in SSE, are a direct replacement for a Vector4. When they then try to "SIMDfy" their Vector3/2 math, their code gets ugly and inefficient.

This is not how to SIMD.โ˜๏ธ (2/5)

03.01.2025 14:30 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I always wanted to get into SIMD programming (SSE, AVX, NEON all that sorts), but never found the right entry, until I stumbled across this talk deplinenoise.wordpress.com/wp-content/u... (1/5)

03.01.2025 14:30 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

You know the drill! TGS is on sale!

20.12.2024 19:29 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

Holiday season is upon us โœจ Join us right now for our first hangout stream on Twitch! Weโ€™ll be reflecting on 2024 and maybe even dropping new info & plans while we play @wildwoodsgame.bsky.social ๐Ÿ‘€

Come say hi, ask us stuff and celebrate another year with us at twitch.tv/ancastasia ๐Ÿ™Œ #indiedev

20.12.2024 19:13 โ€” ๐Ÿ‘ 11    ๐Ÿ” 4    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Doc, I am so sorry.

19.12.2024 21:12 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Tasty Grass Shader (URP/HDRP 3D/VR) | VFX Shaders | Unity Asset Store Add depth to your next project with Tasty Grass Shader (URP/HDRP 3D/VR) from Symmetry Break Studio. Find this & more VFX Shaders on the Unity Asset Store.

Tasty Grass Shader is 50% off!
tgs.symmetrybreak.com

19.12.2024 07:22 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

born under punches

13.12.2024 18:20 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Congrats to @osmoticstudios.com and @pipapogames.bsky.social on the DEP wins!

04.12.2024 11:02 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Woooow, congrats @pipapogames.bsky.social !!

03.12.2024 23:37 โ€” ๐Ÿ‘ 5    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

๐Ÿ™Œ

03.12.2024 12:50 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

๐Ÿ™Œ

29.11.2024 11:56 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Post image

thanks for 100 followers

27.11.2024 17:13 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I have cooked

27.11.2024 09:11 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Tasty Grass Shader (URP/HDRP 3D/VR) | VFX Shaders | Unity Asset Store Add depth to your next project with Tasty Grass Shader (URP/HDRP 3D/VR) from Symmetry Break Studio. Find this & more VFX Shaders on the Unity Asset Store.

Big news for #Unity devs: @schneckerstein.bsky.social's been COOKING! We just released Tasty Grass Shader v.2.2 with support for #HDRP and #UnityShaderGraph ๐Ÿซก

Get incredibly performant, pretty and customizable grass at ๐Ÿ‘‰ tgs.symmetrybreak.com ๐Ÿฅฌ

#gamedev #indiedev #unityassets

27.11.2024 09:09 โ€” ๐Ÿ‘ 15    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1

the powers of having the pw for the dns console

26.11.2024 23:48 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

+1 einfach nur fรผr amon tobin

26.11.2024 21:44 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Just the "front-end". The geometry is generated via compute shader, which doesn't depend on any render pipeline. The shader graph just handles geometry unpacking and material setup.

(Also, no render passes involved, just OnBeginCameraRendering and Graphics.DrawProcedual())

26.11.2024 20:54 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@schneckerstein is following 20 prominent accounts