How do I make a skybox shader graph with multiple layered 2D textures?

Goal: I have a skybox texture which I want mapped as a Latitude-Longitude Layout Cubemap (cylindrical). I want this skybox to be layered so I can scroll multiple layers of clouds independently of each other, giving a parallax effect like clouds spinning around the camera view.

What I have so far: I have a custom shader graph which blends the layers together the way I want, that works fine.

The probblem: When I apply this shader graph/material to Unity’s skybox, it’s not mapped correctly, and I can’t figure out how to fix it. The texture is applied to the skydome at a vertical offset of 0.5, and repeated horizontally four times, and there is also some stretching along the vertical running edges. Obviously my shader graph isn’t translating its blended layers into the cubemap format that Unity wants, but I don’t know how to represent blended cubemaps in a shader graph. I see that there are “Sample Cubemap” and “Sample Reflected Cubemap” nodes, but I don’t know how to scroll/offset their uv layouts.

More details:

This is what my cubemap texture looks like (merged into one layer): https://drive.google.com/file/d/1JmtnCyfCb_bBGjyngZ4-UvmiawZ5RSkt/view?usp=sharing

When I merge the layers together, and set it to the correct cubemap settings, it works fine. This is what it looks like as a single layered skybox: https://drive.google.com/file/d/18eaJULHr-_JCrrBdCRDeDzmLVkzz6TuN/view?usp=sharing

This is what my custom shadergraph looks like: https://drive.google.com/file/d/1OOPKQc9f9xfitddXC4DF91IE0aLvq3sA/view?usp=sharing

This is what that shadergraph looks like applied to the skybox (The texture should be stretched from the top of the sphere to the bottom of the sphere, but it’s stretched to the horizon instead, and repeated below the horizon.) https://drive.google.com/file/d/1_h-8AyoYPZbRHoeap-lYgw3halbdWJp-/view?usp=sharing

This is another angle showing there is also some stretching happening: https://drive.google.com/file/d/1SK_U6IYAS4JYhLi_xFaBjQ5qnV02fXfM/view?usp=sharing

Here I tried using a “Tiling and Offset” node (linked to all my Sample Texture 2d nodes) to make up for the offset, which kinda worked, but it doesn’t get rid of the stretching: https://drive.google.com/file/d/1aKDut4Qpv3dJJ9AwWeKiG1Hxdko43-Bi/view?usp=sharing

Other threads which didn’t quite help:

https://answers.unity.com/questions/1187071/method-for-layered-skybox.html

https://answers.unity.com/questions/986822/how-to-make-standard-shader-material-reflect-camer.html

No Answers

Makes the skybox a white void? I think this is for a different kind of blending.

Specific Questions:

  1. Is there a way to remap the blended color output in my shader graph to a cylindrical cubemap layout? How do I do that?

  2. If I approach this with cubemap nodes instead of Sample Texture 2d nodes, how do I scroll the layers? Some threads were saying that’s impossible. Is it?

  3. Should I just abandon using Unity’s skybox feature and jerryrig my own system?

I never figured out 1) or 2), so I just did 3): I made my own skysphere (64 segemented uv sphere, with flipped normals) and applied my working shader graph to it. I’m probably going to run into issues with lighting down the road, since Unity generates some lighting based on the integrated skybox, but oh well. If anyone crosses this in the future, feel free to answer if you figure it out.

It’s possible this is just not a feature that has been implemented yet. I think shader graphs are a sort of new thing in Unity currently. So maybe this will be a non issue in the future.