rj-action-library/Runtime/Reallusion/CCImportSettings/CCImportConfiguration.cs

102 lines
2.4 KiB
C#

using System.Diagnostics;
using System.Collections;
using System.Collections.Generic;
using System;
using Godot;
using System.Threading.Tasks;
using System.Text;
namespace Rokojori.Reallusion
{
[Tool]
[GlobalClass]
public partial class CCImportConfiguration:Resource
{
[Export]
public bool setRenderPrioritiesForHair = true;
[Export]
public float gammaForAlbedoColor = 1.0f / 2.2f;
[Export]
public CCMaterialOverwrite[] materialOverwrites = [];
[ExportGroup( "Skin")]
[Export]
public bool transmissiveSkin = true;
public bool applyAlbedoNoise = true;
[Export]
public Texture2D skinAlbedoNoise;
[Export]
public float albedoNoiseBrightness = -0.5f;
[Export]
public float albedoNoiseAmount = 0.2f;
public enum HairShaderMode
{
Alpha_Only,
Scissor_AlphaBack_AlphaFront,
Shadow_Scissor_AlphaBack_AlphaFront
}
[ExportGroup( "Hair")]
[Export]
public HairShaderMode hairShaderMode = HairShaderMode.Scissor_AlphaBack_AlphaFront;
[Export(PropertyHint.Range,"0,1")]
public float naturalColors = 0.5f;
[Export(PropertyHint.Range,"0,1")]
public float maximumHighlightAmount = 0.5f;
[Export]
public float hairOpacityGamma = 1.2f;
[Export]
public float anisotropicRatio = 1.0f;
[Export]
public CCHairOpacityGammaOverwrite[] hairOpacityGammaOverwrites = [];
public Material GetOverwriteMaterial( string name, int index )
{
var ov = Arrays.Find( materialOverwrites, mo => mo.meshName == name && mo.materialSurfaceIndex == index );
return ov == null ? null : ov.material;
}
public float GetHairOpacityGamma( string meshName, int surfaceIndex )
{
if ( hairOpacityGammaOverwrites == null || hairOpacityGammaOverwrites.Length == 0 )
{
return hairOpacityGamma;
}
for ( int i = 0; i < hairOpacityGammaOverwrites.Length; i++ )
{
var overwriteTargets = hairOpacityGammaOverwrites[ i ].targets;
for ( int j = 0; j < overwriteTargets.Length; j++ )
{
var target = overwriteTargets[ j ];
if ( target.meshName == meshName && target.materialSurfaceIndex == surfaceIndex )
{
return hairOpacityGammaOverwrites[ i ].hairOpacityGamma;
}
}
}
return hairOpacityGamma;
}
}
}