Sign in to follow this  

float2 dx = ddx(uv.xy * size.x); // does this make sense?

This topic is 1867 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

(given that uv is float2)

shouldn't it be:

[source lang="cpp"]float dx = ddx(uv.x * size.x);

float dy = ddy(uv.y * size.y);

[/source]

and why is there an ddx() and a ddy() ? why not just a dd() ?

Share this post


Link to post
Share on other sites
ddx is the partial derivative of the value with respect to screen-space X, ddy is the partial derivative of the value with respect to screen-space Y. In other words ddx tells you how much the value changes if you were to move to right a pixel, while ddy tells you how much the value changes if you were to move down a pixel. That is why there are two different functions.

I can't tell you whether your code makes sense without knowing what you're actually trying to accomplish, and also knowing what "size" is.

Share this post


Link to post
Share on other sites
I see now!

float2 dx = ddx(uv.xy);

ddx() is returning a vector in texture space

The original code was calculating a lod level manually to allow for sampling neighbouring pixels (in DX9)
[source lang="cpp"]float MipMapLevel(in float2 uv, in float2 textureSize) {

float2 dx = ddx(uv * textureSize.x);
float2 dy = ddy(uv * textureSize.y);

float d = max(dot(dx, dx), dot(dy, dy));

return log2(sqrt(d));

}//function

// then I can use tex2Dlod() with correct pixel offsets for manual interpolation
[/source]
also, from my testing on an ATI3870, fractional LOD levels seem to cause blending between mip levels
so I need to round or truncate my lod level before calculating the pixel offsets

thanks MJP (edit: and Matias, good point) Edited by skytiger

Share this post


Link to post
Share on other sites

This topic is 1867 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this