[RELEASED] Weatherade: Snow and Rain System

It seems that disabling Draw Instanced on the “Dummy Terrain” (Which also disabled it on the main terrain) actually did fix it in the build. Could’ve sworn I tried this, mistake on my part!

Just one other minor thing that I’ve tried experimenting with but couldn’t find a solid explanation in this thread.

For some reason I can’t get “deep traces” without tessellation enabled. This is all fine and dandy but tessellation has some odd artifacts.

Tessellation Disabled:

Tessellation Enabled (Deep traces are there, but weird artifacts while moving):

I did make the SRS_Trace Mask Generator depth to 1 so it gets pushed all the way to the ground according to the doc.

Displacement is relatively far up on the material:

Displacement and traces are also enabled on the global snow coverage instance (With mostly default settings I’m relatively sure):

This one is likely just a skill issue on my part, just wanted to know if there’s something I’m missing.

Please add the receive decals checkbox to your NOT_Lonely material. Or can anyone post a ready-made solution?

It doesn’t fix the problem, it just allows you to use the system without the Draw Instanced. The issue is still there and it’s pretty strange. But if it’s okay for you to not use the Draw Instanced feature, then you can leave it as is.

This happens because your terrain’s mesh is not dense enough. So you can increase the terrain’s heightmap resolution in the terrain settings. Also it maybe needed to add more relief to it, so Unity will break its mesh to smaller quads, because it doesn’t increase the resolution on flat terrain areas.

1 Like

Do you want to stop your materials receive decals?

Yes, your snow materials

I didn’t add the checkbox to decrease the amount of shader variants which is already too huge.
Could you describe a specific case when you need to disable decals on the snow?

Does Weatherade work with Bakery Lightmapper and or Unity Probe Volumes?

Also how can i use Microverse with weatherade? I’d like to be able to make roads, mountain stamps, spline areas etc.

It works with Bakary in a standard lighting mode that supported by Unity’s lightmapper. So RNM and SH/MonoSH modes won’t work correct. The objects will look darker in these modes.

Looks like it needs some additional work from my side to support Probe Volumes. I will look at it later.

I’m sorry, but I didn’t test it. But if it just changes terrain shape based on splines/stamps, then it will work fine.

Hi,

I’m currently using your asset in a Unity project targeting Oculus Quest 3. I’ve encountered an issue where the rain particles are not visible in the build on the Quest device—only the ripples are displayed. However, everything works perfectly fine in the Unity Editor.

I’ve already checked the rendering settings, including Layers, Culling Masks, but the issue persists. Could you please advise on how to resolve this, or let me know if there are any specific steps I should follow to make the rain particles visible on Quest?

Thank you for your help!

Hi,
This system has not been tested on mobile devices and does not officially support them.

Do you see shader errors in the console when building for Quest?

This system work with The Visual Engine plugin? I would like to use a wind system to move the plants while this is active

No, because my system uses its own shaders.

And your shader doesn’t have a property to simulate wind? Maybe i can use your system for the ground and the visual engine for the overlay on the trees

No, it doesn’t have a vertex animation. So yes, you can use it for the ground and another shader for the trees and grass.


Screenshot_3

Dude. How i can improve build time? Too much shader variants. I can get old while it builded

Try to disable the Optimize Mesh Data option in the player settings.

Its disabled :open_mouth:

This is really weird.

I just made a build of a Unity 6000.28 URP project with a clean install of the asset and it took only 25 minutes (first build) on my Ryzen 9 5900.

It was only 384 variants for the tessellated terrain shader.

image

Could you please tell me what render pipeline and Unity version do you use?
Also I’d ask you to make a minimum reproduce project with the issue so I can check it on my side.

Thanks!

Hi, when i open the BasicSetupSnow, the following errors are shown:

Setup:
-Unity: 6000.0.29f1
-URP v.17.0.3
-Shader Graph v.17.0.3
-The package has been fully imported and I have already activated the URPSupport of the package

1:

NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Rendering.RenderGraphModule.RenderGraphResourceRegistry.GetRenderTargetInfo (UnityEngine.Rendering.RenderGraphModule.ResourceHandle& res, UnityEngine.Rendering.RenderGraphModule.RenderTargetInfo& outInfo) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs:708)
UnityEngine.Rendering.RenderGraphModule.RenderGraphBuilders.CheckUseFragment (UnityEngine.Rendering.RenderGraphModule.TextureHandle tex, System.Boolean isDepth) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphBuilders.cs:353)
UnityEngine.Rendering.RenderGraphModule.RenderGraphBuilders.SetRenderAttachment (UnityEngine.Rendering.RenderGraphModule.TextureHandle tex, System.Int32 index, UnityEngine.Rendering.RenderGraphModule.AccessFlags flags, System.Int32 mipLevel, System.Int32 depthSlice) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphBuilders.cs:388)
UnityEngine.Rendering.RenderGraphModule.IRasterRenderGraphBuilder.SetRenderAttachment (UnityEngine.Rendering.RenderGraphModule.TextureHandle tex, System.Int32 index, UnityEngine.Rendering.RenderGraphModule.AccessFlags flags) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/IRenderGraphBuilder.cs:196)
Pathfinding.Drawing.AlineURPRenderPassFeature+AlineURPRenderPass.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ContextContainer frameData) (at ./Packages/com.arongranberg.astar/Drawing/AlineURPRenderPassFeature.cs:50)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordCustomRenderGraphPassesInEventRange (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.Universal.RenderPassEvent eventStart, UnityEngine.Rendering.Universal.RenderPassEvent eventEnd) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1222)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordCustomRenderGraphPasses (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.Universal.RenderPassEvent startInjectionPoint, UnityEngine.Rendering.Universal.RenderPassEvent endInjectionPoint) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1241)
UnityEngine.Rendering.Universal.UniversalRenderer.OnOffscreenDepthTextureRendering (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.UniversalResourceData resourceData, UnityEngine.Rendering.Universal.UniversalCameraData cameraData) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:861)
UnityEngine.Rendering.Universal.UniversalRenderer.OnRecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:787)
UnityEngine.Rendering.Universal.ScriptableRenderer.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1175)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:10)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordAndExecuteRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer, UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Camera camera, System.String cameraName) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:24)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.UniversalCameraData cameraData) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:857)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderCameraStack (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera baseCamera) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:1082)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List1[T] cameras) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:469) UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List1[T] cameras) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipelineAsset, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Camera:Render()
NOT_Lonely.Weatherade.SRS_TraceMaskGenerator:SimOneStep() (at Assets/NOT_Lonely/Weatherade SRS/Scripts/SRS_TraceMaskGenerator.cs:293)
NOT_Lonely.Weatherade.SRS_TraceMaskGenerator:CreateStuff() (at Assets/NOT_Lonely/Weatherade SRS/Scripts/SRS_TraceMaskGenerator.cs:174)
NOT_Lonely.Weatherade.SRS_TraceMaskGenerator:Init() (at Assets/NOT_Lonely/Weatherade SRS/Scripts/SRS_TraceMaskGenerator.cs:181)
NOT_Lonely.Weatherade.CoverageBase:EditorUpdate() (at Assets/NOT_Lonely/Weatherade SRS/Scripts/CoverageBase.cs:225)
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

2:

Render Graph Execution error
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

3:

InvalidOperationException: The CullingResults instance is no longer valid. This can happen if you re-use it across multiple frames.
UnityEngine.Rendering.CullingResults.Validate () (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Rendering.RendererListParams.Validate () (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Rendering.ScriptableRenderContext.CreateRendererList (UnityEngine.Rendering.RendererListParams& param) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Rendering.RenderGraphModule.RenderGraphResourceRegistry.CreateRendererLists (System.Collections.Generic.List`1[T] rendererLists, UnityEngine.Rendering.ScriptableRenderContext context, System.Boolean manualDispatch) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs:1198)
UnityEngine.Rendering.RenderGraphModule.RenderGraph.CompileNativeRenderGraph (System.Int32 graphHash) (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.Compiler.cs:32)
UnityEngine.Rendering.RenderGraphModule.RenderGraph.Execute () (at ./Library/PackageCache/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.cs:1221)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

4:

InvalidOperationException: The previously scheduled job ZBinningJob writes to the Unity.Collections.NativeArray1[System.UInt32] ZBinningJob.bins. You must call JobHandle.Complete() on the job ZBinningJob, before you can write to the Unity.Collections.NativeArray1[System.UInt32] safely.
Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle.CheckWriteAndThrowNoEarlyOut (Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle handle) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
Unity.Collections.LowLevel.Unsafe.NativeArrayUnsafeUtility.GetUnsafePtr[T] (Unity.Collections.NativeArray1[T] nativeArray) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0) UnityEngine.Rendering.Universal.Internal.ForwardLights.PreSetup (UnityEngine.Rendering.Universal.UniversalRenderingData renderingData, UnityEngine.Rendering.Universal.UniversalCameraData cameraData, UnityEngine.Rendering.Universal.UniversalLightData lightData) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs:200) UnityEngine.Rendering.Universal.UniversalRenderer.OnBeforeRendering (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:871) UnityEngine.Rendering.Universal.UniversalRenderer.OnRecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs:791) UnityEngine.Rendering.Universal.ScriptableRenderer.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs:1175) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:10) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RecordAndExecuteRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph renderGraph, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderer renderer, UnityEngine.Rendering.CommandBuffer cmd, UnityEngine.Camera camera, System.String cameraName) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs:24) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.UniversalCameraData cameraData) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:857) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera, UnityEngine.Rendering.Universal.UniversalAdditionalCameraData& additionalCameraData) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:690) UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCameraInternal (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera camera) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:665) UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List1[T] cameras) (at Library/PackageCache/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs:482)
UnityEngine.Rendering.RenderPipeline.InternalRender (UnityEngine.Rendering.ScriptableRenderContext context, System.Collections.Generic.List`1[T] cameras) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipelineAsset, System.IntPtr loopPtr, UnityEngine.Object renderRequest, Unity.Collections.LowLevel.Unsafe.AtomicSafetyHandle safety) (at <0900e0d4bb644dafbfd59eb7fd222a68>:0)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&)

Hi,

Are you sure you don’t use a Compatibility mode of the shader graph?