rj-action-library/Runtime/Procedural/Baking/MultiBaker/_XX_MultiBakeModeBillboardB...

60 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
using System.Threading.Tasks;
namespace Rokojori
{
[Tool][GlobalClass]
public partial class _XX_MultiBakeModeBillboardBase:_XX_MultiBakeMode
{
public override void CreateMaterial( List<_XX_BakingPass> passes )
{
var preview = passes.Find( p => p.ContainsBakingOutput( BakingTargetType.Albedo ) ) == null;
var mb = multiBaker;
var material = new StandardMaterial3D();
material.ShadingMode = preview ? BaseMaterial3D.ShadingModeEnum.Unshaded : BaseMaterial3D.ShadingModeEnum.PerPixel;
material.Transparency = BaseMaterial3D.TransparencyEnum.AlphaScissor;
material.AlphaScissorThreshold = 0.01f;
material.AlphaAntialiasingMode = BaseMaterial3D.AlphaAntiAliasing.AlphaToCoverageAndToOne;
material.AlphaAntialiasingEdge = 0.95f;
material.NormalEnabled = ! preview;
Materials.Set( mb.X_outputMesh, material );
}
public override void AssignMaterial( List<_XX_BakingPass> passes )
{
var mb = multiBaker;
var material = Materials.Get<StandardMaterial3D>( mb.X_outputMesh );
material.AlbedoTexture = _XX_BakingPass.Get( passes, BakingTargetType.Albedo, BakingTargetType.Lit );
material.NormalTexture = _XX_BakingPass.Get( passes, BakingTargetType.Normals );
material.AOTexture = _XX_BakingPass.Get( passes, BakingTargetType.ORM );
material.RoughnessTexture = _XX_BakingPass.Get( passes, BakingTargetType.ORM );
material.MetallicTexture = _XX_BakingPass.Get( passes, BakingTargetType.ORM );
material.AOEnabled = true;
material.AOLightAffect = 1;
material.AOTextureChannel = BaseMaterial3D.TextureChannel.Red;
material.RoughnessTextureChannel = BaseMaterial3D.TextureChannel.Green;
material.MetallicTextureChannel = BaseMaterial3D.TextureChannel.Blue;
material.MetallicSpecular = 0;
// material.Anisotropy = 1;
// material.AnisotropyEnabled = true;
material.TextureFilter = BaseMaterial3D.TextureFilterEnum.LinearWithMipmapsAnisotropic;
}
}
}