From 6f45554a22e3bc856a60cf23bdfb356d3a49464a Mon Sep 17 00:00:00 2001 From: doodlum <15017472+doodlum@users.noreply.github.com> Date: Mon, 6 Oct 2025 20:19:14 +0100 Subject: [PATCH 1/2] fix: fix grass not animating --- CMakeLists.txt | 2 +- package/Shaders/RunGrass.hlsl | 14 ++++++++++++++ src/ShaderCache.h | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f7ac851d5..aa95bbc320 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.21) project( CommunityShaders - VERSION 1.4.3 + VERSION 1.4.4 LANGUAGES CXX ) diff --git a/package/Shaders/RunGrass.hlsl b/package/Shaders/RunGrass.hlsl index 16c43101c7..581bab288f 100644 --- a/package/Shaders/RunGrass.hlsl +++ b/package/Shaders/RunGrass.hlsl @@ -197,12 +197,17 @@ VS_OUTPUT main(VS_INPUT input) float4 msPosition = GetMSPosition(input, world3x3); + float3 windDisplacement = CalculateWindDisplacement(input, WindTimer); + float3 previousWindDisplacement = CalculateWindDisplacement(input, PreviousWindTimer); + # ifdef GRASS_COLLISION float3 displacement, previousDisplacement; GrassCollision::GetDisplacedPosition(input, msPosition.xyz, displacement, previousDisplacement); msPosition.xyz += displacement; # endif // GRASS_COLLISION + msPosition.xyz += windDisplacement; + float4 projSpacePosition = mul(WorldViewProj[eyeIndex], msPosition); # if !defined(VR) vsout.HPosition = projSpacePosition; @@ -237,6 +242,8 @@ VS_OUTPUT main(VS_INPUT input) previousMsPosition.xyz += previousDisplacement; # endif // GRASS_COLLISION + previousMsPosition.xyz += windDisplacement; + vsout.PreviousWorldPosition = mul(PreviousWorld[eyeIndex], previousMsPosition); # if defined(VR) Stereo::VR_OUTPUT VRout = Stereo::GetVRVSOutput(projSpacePosition, eyeIndex); @@ -264,12 +271,17 @@ VS_OUTPUT main(VS_INPUT input) float4 msPosition = GetMSPosition(input); + float3 windDisplacement = CalculateWindDisplacement(input, WindTimer); + float3 previousWindDisplacement = CalculateWindDisplacement(input, PreviousWindTimer); + # ifdef GRASS_COLLISION float3 displacement, previousDisplacement; GrassCollision::GetDisplacedPosition(input, msPosition.xyz, displacement, previousDisplacement); msPosition.xyz += displacement; # endif // GRASS_COLLISION + msPosition.xyz += windDisplacement; + float4 projSpacePosition = mul(WorldViewProj[eyeIndex], msPosition); # if !defined(VR) vsout.HPosition = projSpacePosition; @@ -316,6 +328,8 @@ VS_OUTPUT main(VS_INPUT input) previousMsPosition.xyz += previousDisplacement; # endif // GRASS_COLLISION + previousMsPosition.xyz += previousWindDisplacement; + vsout.PreviousWorldPosition = mul(PreviousWorld[eyeIndex], previousMsPosition); return vsout; diff --git a/src/ShaderCache.h b/src/ShaderCache.h index 745ab1950f..a9a83a3935 100644 --- a/src/ShaderCache.h +++ b/src/ShaderCache.h @@ -3,7 +3,7 @@ #include #include -static constexpr REL::Version SHADER_CACHE_VERSION = { 0, 0, 0, 39 }; +static constexpr REL::Version SHADER_CACHE_VERSION = { 0, 0, 0, 40 }; using namespace std::chrono; From 9efc94c483f3c526086f4d0df1e0bcc22489cc1d Mon Sep 17 00:00:00 2001 From: doodlum <15017472+doodlum@users.noreply.github.com> Date: Mon, 6 Oct 2025 20:31:32 +0100 Subject: [PATCH 2/2] Update package/Shaders/RunGrass.hlsl Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- package/Shaders/RunGrass.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package/Shaders/RunGrass.hlsl b/package/Shaders/RunGrass.hlsl index 581bab288f..6438df741a 100644 --- a/package/Shaders/RunGrass.hlsl +++ b/package/Shaders/RunGrass.hlsl @@ -242,7 +242,7 @@ VS_OUTPUT main(VS_INPUT input) previousMsPosition.xyz += previousDisplacement; # endif // GRASS_COLLISION - previousMsPosition.xyz += windDisplacement; + previousMsPosition.xyz += previousWindDisplacement; vsout.PreviousWorldPosition = mul(PreviousWorld[eyeIndex], previousMsPosition); # if defined(VR)