diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7BillboardPasses.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7BillboardPasses.hlsl index d0a554c8b2c..549615da9c2 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7BillboardPasses.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7BillboardPasses.hlsl @@ -13,7 +13,7 @@ void InitializeData(inout SpeedTreeVertexInput input, out half2 outUV, out half float3 eyeVec = normalize(unity_BillboardCameraPosition - worldPos); float3 billboardTangent = normalize(float3(-eyeVec.z, 0, eyeVec.x)); // cross(eyeVec, {0,1,0}) float3 billboardNormal = float3(billboardTangent.z, 0, -billboardTangent.x); // cross({0,1,0},billboardTangent) - float3 angle = atan2(billboardNormal.z, billboardNormal.x); // signed angle between billboardNormal to {0,0,1} + float angle = atan2(billboardNormal.z, billboardNormal.x); // signed angle between billboardNormal to {0,0,1} angle += angle < 0 ? 2 * SPEEDTREE_PI : 0; #else float3 billboardTangent = unity_BillboardTangent; @@ -31,7 +31,12 @@ void InitializeData(inout SpeedTreeVertexInput input, out half2 outUV, out half #ifdef ENABLE_WIND if (_WindQuality * _WindEnabled > 0) + { + // Disabling "pow(f,e) will not work for negative f"; warnings. + #pragma warning (disable : 3571) billboardPos = GlobalWind(billboardPos, worldPos, true, _ST_WindVector.xyz, input.texcoord1.w); + #pragma warning (enable : 3571) + } #endif input.vertex.xyz += billboardPos; diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Passes.hlsl index 6223222d4e5..199cde43ab6 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree7Passes.hlsl @@ -87,10 +87,13 @@ void InitializeData(inout SpeedTreeVertexInput input, float lodValue) } #endif + // global wind if (windQuality > WIND_QUALITY_NONE) { - // global wind + // Disabling "pow(f,e) will not work for negative f"; warnings. + #pragma warning (disable : 3571) finalPosition = GlobalWind(finalPosition, treePos, true, rotatedWindVector, _ST_WindGlobal.x); + #pragma warning (enable : 3571) } #endif diff --git a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl index 7281bf24e52..90e44bee5bb 100644 --- a/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl +++ b/com.unity.render-pipelines.universal/Shaders/Nature/SpeedTree8Passes.hlsl @@ -146,7 +146,12 @@ void InitializeData(inout SpeedTreeVertexInput input, float lodValue) #if defined(EFFECT_BILLBOARD) && defined(UNITY_INSTANCING_ENABLED) globalWindTime += UNITY_ACCESS_INSTANCED_PROP(STWind, _GlobalWindTime); #endif + + // Disabling "pow(f,e) will not work for negative f"; warnings. + #pragma warning (disable : 3571) windyPosition = GlobalWind(windyPosition, treePos, true, rotatedWindVector, globalWindTime); + #pragma warning (enable : 3571) + input.vertex.xyz = windyPosition; } #endif