GL_EXT_rescale_normal |

- Name
- Name Strings
- Version
- Number
- Dependencies
- Overview
- New Procedures and Functions
- New Tokens
- Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation)
- Additions to Chapter 3 of the 1.1 Specification (Rasterization)
- Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations and the Framebuffer)
- Additions to Chapter 5 of the 1.1 Specification (Special Functions)
- Additions to Chapter 6 of the 1.1 Specification (State and State Requests)
- Additions to the GLX Specification
- GLX Protocol
- Errors
- New State
- New Implementation Dependent State

Name |

EXT_rescale_normal

Name Strings |

GL_EXT_rescale_normal

Version |

$Date: 1997/07/02 23:38:17 $ $Revision: 1.7 $

Number |

27

Dependencies |

None

Overview |

When normal rescaling is enabled a new operation is added to the transformation of the normal vector into eye coordinates. The normal vector is rescaled after it is multiplied by the inverse modelview matrix and before it is normalized. The rescale factor is chosen so that in many cases normal vectors with unit length in object coordinates will not need to be normalized as they are transformed into eye coordinates.

New Procedures and Functions |

None

New Tokens |

Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev: RESCALE_NORMAL_EXT

Additions to Chapter 2 of the 1.1 Specification (OpenGL Operation) |

Section 2.10.3 Finally, we consider how the ModelView transformation state affects normals. Normals are of interest only in eye coordinates, so the rules governing their transformation to other coordinate systems are not examined. Normals which have unit length when sent to the GL, have their length changed by the inverse of the scaling factor after transformation by the model-view inverse matrix when the model-view matrix represents a uniform scale. If rescaling is enabled, then normals specified with the Normal command are rescaled after transformation by the ModelView Inverse. Normals sent to the GL may or may not have unit length. In addition, the length of the normals after transformation might be altered due to transformation by the model-view inverse matrix. If normalization is enabled, then normals specified with the Normal3 command are normalized after transformation by the model-view inverse matrix and after rescaling if rescaling is enabled. Normalization and rescaling are controlled with void Enable( enum target); and void Disable( enum target); with target equal to NORMALIZE or RESCALE_NORMAL. This requires two bits of state. The initial state is for normals not to be normalized or rescaled. . . . Therefore, if the modelview matrix is M, then the transformed plane equation is (n_x' n_y' n_z' q') = ((n_x n_y n_z q) * (M^-1)), the rescaled normal is (n_x" n_y" n_z") = f * (n_x' n_y' n_z'), and the fully transformed normal is 1 (n_x") ____________ (n_y") (2.1) __________________________________ (n_z") V (n_x")^2 + (n_y")^2 + (n_z")^2 If rescaling is disabled then f is 1, otherwise f is computed as follows: Let m_ij denote the matrix element in row i and column j of M^-1, numbering the topmost row of the matrix as row 1, and the leftmost column as column 1. Then 1 __________ f = ________________________________ V (m_31)^2 + (m_32)^2 + (m_33)^2 Alternatively, an implementation my chose to normalize the normal instead of rescaling the normal. Then 1 __________ f = ________________________________ V (n_x')^2 + (n_y')^2 + (n_z')^2 If normalization is disabled, then the square root in equation 2.1 is replaced with 1, otherwise . . . .

Additions to Chapter 3 of the 1.1 Specification (Rasterization) |

None

Additions to Chapter 4 of the 1.1 Specification (Per-Fragment Operations and the Framebuffer) |

None

Additions to Chapter 5 of the 1.1 Specification (Special Functions) |

None

Additions to Chapter 6 of the 1.1 Specification (State and State Requests) |

None

Additions to the GLX Specification |

None

GLX Protocol |

None

Errors |

None

New State |

Get Value Get Command Type Initial Value Attribute --------- ----------- ---- ------------- --------- RESCALE_NORMAL_EXT IsEnabled B FALSE transform/enable

New Implementation Dependent State |

None None

Last update: November 14, 2006.Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1. |