Adding fog offset to Shader material

Hi so I am trying to add an offset to the fog on my shader texture
I’ve managed to do this before but now i have changed the code slightly to use uv repeating and im not sure how to apply viewDirection to vec3 txl here’s the code:


 	varying vec2 vuv;
  
  uniform vec2 repeat;
  uniform vec3 topColor;
  uniform vec3 bottomColor;
  uniform float offset;
  uniform float exponent;
  
  uniform vec3 fogColor;
  uniform float fogNear;
  uniform float fogFar;
  uniform float fogDensity;
  uniform sampler2D background;
  
  varying vec3 vWorldPosition;
  
  void main() {
    vec3 viewDirection = normalize(vWorldPosition - cameraPosition);
	// orginal this worked with fog
	// vec3 stars = textureCube(background, viewDirection).xyz;
   vec2 uv = vuv;
  	uv = fract(uv * repeat);
  	vec2 smooth_uv = repeat * vuv;
  	vec4 duv = vec4(dFdx(smooth_uv), dFdy(smooth_uv));
  	vec3 txl = textureGrad(background, uv, duv.xy, duv.zw).rgb;
  
    float h = normalize(vWorldPosition + offset).y;
    float t = max(pow(max(h, 0.0), exponent), 0.0);
  
    float f = exp(min(0.0, -vWorldPosition.y * 0.00125));
 		
    vec3 sky = mix(txl, bottomColor, f);
	 
     gl_FragColor = vec4(sky, 1.0);
  
  }`;

In my code code i did

vec3 stars = textureCube(background, viewDirection).xyz;
    float h = normalize(vWorldPosition + offset).y;
    float f = exp(min(0.0, -vWorldPosition.y * 0.00125));

this worked fine but because
I have changed the first line to this vec3 txl = textureGrad(background, uv, duv.xy, duv.zw).rgb; I no longer have viewDirection, which is the vWorldPosition that the offset goes off so my question really is this…
how can i add viewDirection to vec3 txl = textureGrad(background, uv, duv.xy, duv.zw).rgb; so the offset works again?
thanks!

tried replacing these didn’t work

vec4 duv = vec4(dFdx(smooth_uv), dFdy(smooth_uv));
  	vec3 txl = textureGrad(background, uv, duv.xy, duv.zw).rgb;

to

vec4 duv = vec4(viewDirection(smooth_uv), viewDirection(smooth_uv));

then tried
vec3 txl = textureGrad(background, uv, viewDirection.xy, viewDirection.zw).rgb;

nin work tho and throw errors, webgl is by means my strong point lol.