mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Merge branch 'alpha40_premul' of https://github.com/Azaezel/Torque3D into Preview4_0
This commit is contained in:
commit
27ee09e491
|
|
@ -82,6 +82,7 @@ ImplementEnumType( MaterialBlendOp,
|
|||
"@ingroup GFX\n\n")
|
||||
{ Material::None, "None", "Disable blending for this material." },
|
||||
{ Material::Mul, "Mul", "Multiplicative blending." },
|
||||
{ Material::PreMul, "PreMul", "Premultiplied alpha." },
|
||||
{ Material::Add, "Add", "Adds the color of the material to the frame buffer with full alpha for each pixel." },
|
||||
{ Material::AddAlpha, "AddAlpha", "The color is modulated by the alpha channel before being added to the frame buffer." },
|
||||
{ Material::Sub, "Sub", "Subtractive Blending. Reverses the color model, causing dark colors to have a stronger visual effect." },
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ public:
|
|||
{
|
||||
None = 0,
|
||||
Mul,
|
||||
PreMul,
|
||||
Add,
|
||||
AddAlpha, // add modulated with alpha channel
|
||||
Sub,
|
||||
|
|
|
|||
|
|
@ -128,6 +128,12 @@ void ProcessedMaterial::_setBlendState(Material::BlendOp blendOp, GFXStateBlockD
|
|||
desc.blendDest = GFXBlendInvSrcAlpha;
|
||||
break;
|
||||
}
|
||||
case Material::PreMul:
|
||||
{
|
||||
desc.blendSrc = GFXBlendOne;
|
||||
desc.blendDest = GFXBlendInvSrcAlpha;
|
||||
break;
|
||||
}
|
||||
case Material::LerpAlpha:
|
||||
{
|
||||
desc.blendSrc = GFXBlendSrcAlpha;
|
||||
|
|
|
|||
|
|
@ -115,6 +115,10 @@ LangElement* ShaderFeatureGLSL::assignColor( LangElement *elem,
|
|||
assign = new GenOp( "@ *= @", color, elem );
|
||||
break;
|
||||
|
||||
case Material::PreMul:
|
||||
assign = new GenOp("@.rgb = @.rgb + (@.rgb*(1.0-@.a))", color, elem, color, elem);
|
||||
break;
|
||||
|
||||
case Material::AddAlpha:
|
||||
assign = new GenOp( "@ += @ * @.a", color, elem, elem );
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -120,6 +120,10 @@ LangElement* ShaderFeatureHLSL::assignColor( LangElement *elem,
|
|||
assign = new GenOp( "@ *= @", color, elem );
|
||||
break;
|
||||
|
||||
case Material::PreMul:
|
||||
assign = new GenOp("@.rgb = @.rgb + (@.rgb*(1.0-@.a))", color, elem, color, elem);
|
||||
break;
|
||||
|
||||
case Material::AddAlpha:
|
||||
assign = new GenOp( "@ += @ * @.a", color, elem, elem );
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -74,12 +74,12 @@ function MaterialEditorGui::open(%this)
|
|||
//Blending Modes
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.clear();
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(None,0);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Mul,1);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Add,2);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(AddAlpha,3);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Sub,4);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(LerpAlpha,5);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(PreMult,6);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(preMul,1);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(LerpAlpha,2);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Mul,3);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Add,4);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(AddAlpha,5);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Sub,6);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.setSelected( 0, false );
|
||||
|
||||
//Reflection Types
|
||||
|
|
@ -785,16 +785,24 @@ function MaterialEditorGui::guiSync( %this, %material )
|
|||
MaterialEditorPropertiesWindow-->castShadows.setValue((%material).castShadows);
|
||||
MaterialEditorPropertiesWindow-->castDynamicShadows.setValue((%material).castDynamicShadows);
|
||||
MaterialEditorPropertiesWindow-->translucentCheckbox.setValue((%material).translucent);
|
||||
/*
|
||||
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(preMul,1);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(LerpAlpha,2);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Mul,3);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Add,4);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(AddAlpha,5);
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.add(Sub,6);
|
||||
*/
|
||||
switch$((%material).translucentBlendOp)
|
||||
{
|
||||
case "None": %selectedNum = 0;
|
||||
case "Mul": %selectedNum = 1;
|
||||
case "Add": %selectedNum = 2;
|
||||
case "AddAlpha": %selectedNum = 3;
|
||||
case "Sub": %selectedNum = 4;
|
||||
case "LerpAlpha": %selectedNum = 5;
|
||||
case "PreMult": %selectedNum = 6;
|
||||
case "None": %selectedNum = 0;
|
||||
case "preMul": %selectedNum = 1;
|
||||
case "LerpAlpha": %selectedNum = 2;
|
||||
case "Mul": %selectedNum = 3;
|
||||
case "": %selectedNum = 4;
|
||||
case "AddAlpha": %selectedNum = 5;
|
||||
case "Sub": %selectedNum = 6;
|
||||
}
|
||||
MaterialEditorPropertiesWindow-->blendingTypePopUp.setSelected(%selectedNum);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue