Added 'Radial' blend texture type for created colored radial gradients

like that you might find on a CD. Special thanks to use Phlip in
#blenderchat for help on the math. Thanks Philp!
This commit is contained in:
Chris Burt 2005-09-19 13:00:44 +00:00
parent 4074832f90
commit ed674ba6f9
3 changed files with 21 additions and 8 deletions

@ -259,6 +259,15 @@ typedef struct Tex {
#define TEX_SHARP 1
#define TEX_SHARPER 2
/* tex->stype in texture.c - blend types */
#define TEX_LIN 0
#define TEX_QUAD 1
#define TEX_EASE 2
#define TEX_DIAG 3
#define TEX_SPHERE 4
#define TEX_HALO 5
#define TEX_RAD 6
/* wrap */
#define MTEX_FLAT 0
#define MTEX_CUBE 1

@ -283,15 +283,15 @@ static int blend(Tex *tex, float *texvec, TexResult *texres)
y= texvec[1];
}
if(tex->stype==0) { /* lin */
if(tex->stype==TEX_LIN) { /* lin */
texres->tin= (1.0+x)/2.0;
}
else if(tex->stype==1) { /* quad */
else if(tex->stype==TEX_QUAD) { /* quad */
texres->tin= (1.0+x)/2.0;
if(texres->tin<0.0) texres->tin= 0.0;
else texres->tin*= texres->tin;
}
else if(tex->stype==2) { /* ease */
else if(tex->stype==TEX_EASE) { /* ease */
texres->tin= (1.0+x)/2.0;
if(texres->tin<=.0) texres->tin= 0.0;
else if(texres->tin>=1.0) texres->tin= 1.0;
@ -300,10 +300,13 @@ static int blend(Tex *tex, float *texvec, TexResult *texres)
texres->tin= (3.0*t-2.0*t*texres->tin);
}
}
else if(tex->stype==3) { /* diag */
else if(tex->stype==TEX_DIAG) { /* diag */
texres->tin= (2.0+x+y)/4.0;
}
else { /* sphere */
else if(tex->stype==TEX_RAD) { /* radial */
texres->tin= (atan2(y,x) / (2*M_PI) + 0.5);
}
else { /* sphere TEX_SPHERE */
texres->tin= 1.0-sqrt(x*x+ y*y+texvec[2]*texvec[2]);
if(texres->tin<0.0) texres->tin= 0.0;
if(tex->stype==5) texres->tin*= texres->tin; /* halo */

@ -860,9 +860,10 @@ static void texture_panel_blend(Tex *tex)
uiDefButS(block, ROW, B_TEXPRV, "Ease", 160, 180, 75, 19, &tex->stype, 2.0, 2.0, 0, 0, "Creates a progression easing from one step to the next");
uiDefButBitS(block, TOG, TEX_FLIPBLEND, B_TEXPRV, "Flip XY", 235, 180, 75, 19, &tex->flag, 0, 0, 0, 0, "Flips the direction of the progression 90 degrees");
uiDefButS(block, ROW, B_TEXPRV, "Diag", 10, 160, 100, 19, &tex->stype, 2.0, 3.0, 0, 0, "Use a diagonal progression");
uiDefButS(block, ROW, B_TEXPRV, "Sphere", 110, 160, 100, 19, &tex->stype, 2.0, 4.0, 0, 0, "Use progression with the shape of a sphere");
uiDefButS(block, ROW, B_TEXPRV, "Halo", 210, 160, 100, 19, &tex->stype, 2.0, 5.0, 0, 0, "Use a quadratic progression with the shape of a sphere");
uiDefButS(block, ROW, B_TEXPRV, "Diag", 10, 160, 75, 19, &tex->stype, 2.0, 3.0, 0, 0, "Use a diagonal progression");
uiDefButS(block, ROW, B_TEXPRV, "Sphere", 85, 160, 75, 19, &tex->stype, 2.0, 4.0, 0, 0, "Use progression with the shape of a sphere");
uiDefButS(block, ROW, B_TEXPRV, "Halo", 160, 160, 75, 19, &tex->stype, 2.0, 5.0, 0, 0, "Use a quadratic progression with the shape of a sphere");
uiDefButS(block, ROW, B_TEXPRV, "Radial", 235, 160, 75, 19, &tex->stype, 2.0, 6.0, 0, 0, "Use a polar progression");
}