just code clean-ups and new comments
This commit is contained in:
parent
ec17e7941a
commit
b6c0d753fa
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
* Version: 6.1
|
* Version: 6.3
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
|
* Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
* copy of this software and associated documentation files (the "Software"),
|
||||||
|
@ -39,7 +39,6 @@
|
||||||
#include "t_pipeline.h"
|
#include "t_pipeline.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct normal_stage_data {
|
struct normal_stage_data {
|
||||||
normal_func NormalTransform;
|
normal_func NormalTransform;
|
||||||
GLvector4f normal;
|
GLvector4f normal;
|
||||||
|
@ -48,10 +47,8 @@ struct normal_stage_data {
|
||||||
#define NORMAL_STAGE_DATA(stage) ((struct normal_stage_data *)stage->privatePtr)
|
#define NORMAL_STAGE_DATA(stage) ((struct normal_stage_data *)stage->privatePtr)
|
||||||
|
|
||||||
|
|
||||||
|
static GLboolean
|
||||||
|
run_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
|
||||||
static GLboolean run_normal_stage( GLcontext *ctx,
|
|
||||||
struct tnl_pipeline_stage *stage )
|
|
||||||
{
|
{
|
||||||
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
||||||
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
|
||||||
|
@ -75,7 +72,7 @@ static GLboolean run_normal_stage( GLcontext *ctx,
|
||||||
&store->normal ); /* resulting normals */
|
&store->normal ); /* resulting normals */
|
||||||
|
|
||||||
if (VB->NormalPtr->count > 1) {
|
if (VB->NormalPtr->count > 1) {
|
||||||
store->normal.stride = 16;
|
store->normal.stride = 4 * sizeof(GLfloat);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
store->normal.stride = 0;
|
store->normal.stride = 0;
|
||||||
|
@ -89,8 +86,12 @@ static GLboolean run_normal_stage( GLcontext *ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void validate_normal_stage( GLcontext *ctx,
|
/**
|
||||||
struct tnl_pipeline_stage *stage )
|
* Examine current GL state and set the store->NormalTransform pointer
|
||||||
|
* to point to the appropriate normal transformation routine.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
validate_normal_stage(GLcontext *ctx, struct tnl_pipeline_stage *stage)
|
||||||
{
|
{
|
||||||
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
||||||
|
|
||||||
|
@ -101,22 +102,25 @@ static void validate_normal_stage( GLcontext *ctx,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (ctx->_NeedEyeCoords) {
|
if (ctx->_NeedEyeCoords) {
|
||||||
|
/* Eye coordinates are needed, for whatever reasons.
|
||||||
|
* Do lighting in eye coordinates, as the GL spec says.
|
||||||
|
*/
|
||||||
GLuint transform = NORM_TRANSFORM_NO_ROT;
|
GLuint transform = NORM_TRANSFORM_NO_ROT;
|
||||||
|
|
||||||
if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_GENERAL |
|
if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_GENERAL |
|
||||||
MAT_FLAG_ROTATION |
|
MAT_FLAG_ROTATION |
|
||||||
MAT_FLAG_GENERAL_3D |
|
MAT_FLAG_GENERAL_3D |
|
||||||
MAT_FLAG_PERSPECTIVE))
|
MAT_FLAG_PERSPECTIVE)) {
|
||||||
|
/* need to do full (3x3) matrix transform */
|
||||||
transform = NORM_TRANSFORM;
|
transform = NORM_TRANSFORM;
|
||||||
|
}
|
||||||
|
|
||||||
if (ctx->Transform.Normalize) {
|
if (ctx->Transform.Normalize) {
|
||||||
store->NormalTransform = _mesa_normal_tab[transform | NORM_NORMALIZE];
|
store->NormalTransform = _mesa_normal_tab[transform | NORM_NORMALIZE];
|
||||||
}
|
}
|
||||||
else if (ctx->Transform.RescaleNormals &&
|
else if (ctx->Transform.RescaleNormals &&
|
||||||
ctx->_ModelViewInvScale != 1.0) {
|
ctx->_ModelViewInvScale != 1.0) {
|
||||||
store->NormalTransform = _mesa_normal_tab[transform | NORM_RESCALE];
|
store->NormalTransform = _mesa_normal_tab[transform | NORM_RESCALE];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -124,6 +128,11 @@ static void validate_normal_stage( GLcontext *ctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
/* We don't need eye coordinates.
|
||||||
|
* Do lighting in object coordinates. Thus, we don't need to fully
|
||||||
|
* transform normal vectors (just leave them in object coordinates)
|
||||||
|
* but we still need to do normalization/rescaling if enabled.
|
||||||
|
*/
|
||||||
if (ctx->Transform.Normalize) {
|
if (ctx->Transform.Normalize) {
|
||||||
store->NormalTransform = _mesa_normal_tab[NORM_NORMALIZE];
|
store->NormalTransform = _mesa_normal_tab[NORM_NORMALIZE];
|
||||||
}
|
}
|
||||||
|
@ -138,13 +147,16 @@ static void validate_normal_stage( GLcontext *ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
static GLboolean alloc_normal_data( GLcontext *ctx,
|
* Allocate stage's private data (storage for transformed normals).
|
||||||
struct tnl_pipeline_stage *stage )
|
*/
|
||||||
|
static GLboolean
|
||||||
|
alloc_normal_data(GLcontext *ctx, struct tnl_pipeline_stage *stage)
|
||||||
{
|
{
|
||||||
TNLcontext *tnl = TNL_CONTEXT(ctx);
|
TNLcontext *tnl = TNL_CONTEXT(ctx);
|
||||||
struct normal_stage_data *store;
|
struct normal_stage_data *store;
|
||||||
stage->privatePtr = MALLOC(sizeof(*store));
|
|
||||||
|
stage->privatePtr = _mesa_malloc(sizeof(*store));
|
||||||
store = NORMAL_STAGE_DATA(stage);
|
store = NORMAL_STAGE_DATA(stage);
|
||||||
if (!store)
|
if (!store)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
@ -154,13 +166,16 @@ static GLboolean alloc_normal_data( GLcontext *ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
static void free_normal_data( struct tnl_pipeline_stage *stage )
|
* Free stage's private data.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
free_normal_data(struct tnl_pipeline_stage *stage)
|
||||||
{
|
{
|
||||||
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
struct normal_stage_data *store = NORMAL_STAGE_DATA(stage);
|
||||||
if (store) {
|
if (store) {
|
||||||
_mesa_vector4f_free( &store->normal );
|
_mesa_vector4f_free( &store->normal );
|
||||||
FREE( store );
|
_mesa_free( store );
|
||||||
stage->privatePtr = NULL;
|
stage->privatePtr = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,9 +184,9 @@ static void free_normal_data( struct tnl_pipeline_stage *stage )
|
||||||
const struct tnl_pipeline_stage _tnl_normal_transform_stage =
|
const struct tnl_pipeline_stage _tnl_normal_transform_stage =
|
||||||
{
|
{
|
||||||
"normal transform", /* name */
|
"normal transform", /* name */
|
||||||
NULL, /* private data */
|
NULL, /* privatePtr */
|
||||||
alloc_normal_data,
|
alloc_normal_data, /* create */
|
||||||
free_normal_data, /* destructor */
|
free_normal_data, /* destroy */
|
||||||
validate_normal_stage, /* check */
|
validate_normal_stage, /* validate */
|
||||||
run_normal_stage
|
run_normal_stage /* run */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue