dotProduct2scale, dotProductScale shader parameters

(two extra args for the min/max of the range to map 0..1 to)


git-svn-id: svn://svn.icculus.org/netradiant/trunk@98 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
rpolzer 2008-09-22 05:46:42 +00:00
parent e31dd65a78
commit 576b0dd959
2 changed files with 38 additions and 1 deletions

View File

@ -635,8 +635,12 @@ typedef enum
CM_ALPHA_SCALE, CM_ALPHA_SCALE,
CM_COLOR_DOT_PRODUCT, CM_COLOR_DOT_PRODUCT,
CM_ALPHA_DOT_PRODUCT, CM_ALPHA_DOT_PRODUCT,
CM_COLOR_DOT_PRODUCT_SCALE,
CM_ALPHA_DOT_PRODUCT_SCALE,
CM_COLOR_DOT_PRODUCT_2, CM_COLOR_DOT_PRODUCT_2,
CM_ALPHA_DOT_PRODUCT_2 CM_ALPHA_DOT_PRODUCT_2,
CM_COLOR_DOT_PRODUCT_2_SCALE,
CM_ALPHA_DOT_PRODUCT_2_SCALE
} }
colorModType_t; colorModType_t;

View File

@ -98,21 +98,47 @@ void ColorMod( colorMod_t *cm, int numVerts, bspDrawVert_t *drawVerts )
VectorSet( mult, c, c, c ); VectorSet( mult, c, c, c );
break; break;
case CM_COLOR_DOT_PRODUCT_SCALE:
c = DotProduct( dv->normal, cm2->data );
c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]);
VectorSet( mult, c, c, c );
break;
case CM_ALPHA_DOT_PRODUCT: case CM_ALPHA_DOT_PRODUCT:
mult[ 3 ] = DotProduct( dv->normal, cm2->data ); mult[ 3 ] = DotProduct( dv->normal, cm2->data );
break; break;
case CM_ALPHA_DOT_PRODUCT_SCALE:
c = DotProduct( dv->normal, cm2->data );
c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]);
mult[ 3 ] = c;
break;
case CM_COLOR_DOT_PRODUCT_2: case CM_COLOR_DOT_PRODUCT_2:
c = DotProduct( dv->normal, cm2->data ); c = DotProduct( dv->normal, cm2->data );
c *= c; c *= c;
VectorSet( mult, c, c, c ); VectorSet( mult, c, c, c );
break; break;
case CM_COLOR_DOT_PRODUCT_2_SCALE:
c = DotProduct( dv->normal, cm2->data );
c *= c;
c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]);
VectorSet( mult, c, c, c );
break;
case CM_ALPHA_DOT_PRODUCT_2: case CM_ALPHA_DOT_PRODUCT_2:
mult[ 3 ] = DotProduct( dv->normal, cm2->data ); mult[ 3 ] = DotProduct( dv->normal, cm2->data );
mult[ 3 ] *= mult[ 3 ]; mult[ 3 ] *= mult[ 3 ];
break; break;
case CM_ALPHA_DOT_PRODUCT_2_SCALE:
c = DotProduct( dv->normal, cm2->data );
c *= c;
c = cm2->data[4] + c * (cm2->data[5] - cm2->data[4]);
mult[ 3 ] = c;
break;
default: default:
break; break;
} }
@ -1753,6 +1779,13 @@ static void ParseShaderFile( const char *filename )
Parse1DMatrixAppend( shaderText, 3, cm->data ); Parse1DMatrixAppend( shaderText, 3, cm->data );
} }
/* dotProduct2scale ( X Y Z MIN MAX ) */
else if( !Q_stricmp( token, "dotProduct2scale" ) )
{
cm->type = CM_COLOR_DOT_PRODUCT_2_SCALE + alpha;
Parse1DMatrixAppend( shaderText, 5, cm->data );
}
/* volume */ /* volume */
else if( !Q_stricmp( token, "volume" ) ) else if( !Q_stricmp( token, "volume" ) )
{ {