Jump to content
  • Advertisement
  • 08/23/99 09:44 PM
    Sign in to follow this  

    WWH - Sub-texel Accuracy

    Graphics and GPU Programming

    Myopic Rhino
    The purpose of a WWH is to expand one's knowledge on a topic they already understand, but need a reference, a refresher course, or to simply extend what they already know about the topic. WWH is the quick tutor. Just the [W]hat, [W]hy and [H]ow

    [size="5"]What

    Sub-texel accuracy is used to clean up texturing quality, and solve other accuracy problems (such as wrap-around in textures, and overflow for Gouraud shading).

    This document relies on the fact that you have already read WWH1 (sub-pixel accuracy) as they are interrelated, and especially since you can't achieve sub-texel accuracy without first achieving sub-pixel accuracy.

    Considering what we learned from WWH1, sub-texel accuracy is a very simple extension of sub-pixel accuracy. In the same way that we need to "slide" polygons across the screen to align with pixel boundaries, sub-texel accuracy simply "slides" the texture across the polygon to align to the polygon edges.

    [size="5"]Why

    For better looking renders, of course. (See WWH1 for more details).

    [size="5"]How

    Considering what we learned about sub-pixel accuracy from WWH1, here's what we need to do to achieve sub-texel accuracy.

    In our polygon scan-conversion model explained in WWH1, we "slide" our pixels down the top of each edge. For sub-texel accuracy, we'll need to "slide" our texture at the beginning of each scan-line. Due to the frequency at which this code gets called (once per scan-line vs. once per edge) this code may cause a noticeable speed hit, however, with pipeline optimizations that speed-hit can be minimized.

    Consider the following code fragment:

    start_u += delta_u * SUB_PIX(start_x); start_v += delta_v * SUB_PIX(start_x);
    What this does is to simply "slide" the starting U/V coordinates along its scan-line by the distance that the starting X is from the right-edge of its pixel.

    This process must be done for each value that gets interpolated along the edges (i.e. any U/V for texturing or Gouraud color values, etc.)

    This is sub-texel accuracy. To test your modifications, try rotating a quad polygon perpendicular to the screen very slowly, with a checkerboard pattern textured onto it.


      Report Article
    Sign in to follow this  


    User Feedback


    There are no comments to display.



    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

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!