The Inverse Bi-Cubic Transform Generated in Real-Time Hardware

A geometric model is based on a collection of mappings

Remember:

{equation 1}

    X = f(u,w)
    Y = g(u,w)
    Z = h(u,w)

with u,w parametric variables defined on the two-dimensional space.

{equation 2}


    x =   a33U^3W^3 + a32U^3W^2   + a31U^3W  + a30U^3
        + a23U^2W^3 +             +          + a20U^2
        + a13UW^3   +             +          + a10U
        + a03W^3    +             +          + a00

    y =   b33U^3W^3 +  ....     etc.;

    z =   c33U^3W^3 +  ....     etc.;

Since the u,w are to have their values restricted to the range 0 to 1, and since we want to use them as addresses into texture image memory, then we have to define additional functions ii,jj:

{equation 3}

    ICx = ii(u); and,
    IRy = jj(w)

where ICz and IRy are the actual column and row addresses into texture image memory. As an address we will write it as [ICx,IRy].

If the patch is defined as 256 x 256 then the successive values of u will be =

  0/256,1/256,2/256....254/256,255/256 and simarily for w.

So an obvious set of functions for ii and jj are:

{equation 4}

    ii = (256 * u) + kc;
    jj = (256 * w) + kr;

where kc, kr are the starting addresses in texture image memory for this patch. (But these are not the only possible functions). If the column and row addresses into the output frame buffer are SCx and SRy, [SCx,SRy], then:

{equation 5}

    SCx = XZ; and,
    SRy = YZ

where

{equation 6}

    XZ = (a/b) * (X/Z); and,
    YZ = (a/b) * (X/Z).

and the a,b are constants relating to the size of the screen in pixels.

In our system, the higher-level software partitions the model in such a way that the XZ,YZ range over a smaller space than the number of discrete calculations with the u,w. In the example above the XZ,YZ would be constrained to an area of the screen less than 256 x 256. This constraint means that inside the region where the XZ,YZ are defined there will be no {XZ,YZ} that have no u,w associated with them.

The rest of this discussion is available under NDA.