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:
parent
e31dd65a78
commit
576b0dd959
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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" ) )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user