12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System;
- using UnityEditor.Graphing;
- using UnityEditor.ShaderGraph.Internal;
- using UnityEngine;
-
- namespace UnityEditor.ShaderGraph
- {
- [BlackboardInputInfo(80)]
- class SamplerStateShaderProperty : AbstractShaderProperty<TextureSamplerState>
- {
- public SamplerStateShaderProperty()
- {
- displayName = "SamplerState";
- value = new TextureSamplerState();
- }
-
- public override PropertyType propertyType => PropertyType.SamplerState;
-
- // Sampler States cannot be exposed on a Material
- internal override bool isExposable => false;
-
- // subgraph Sampler States can be renamed
- // just the actual properties they create will always have fixed names
- internal override bool isRenamable => true;
-
- internal override bool isReferenceRenamable => false;
-
- // this is the fixed naming scheme for actual samplerstates properties
- string propertyReferenceName => value.defaultPropertyName;
- public override string referenceNameForEditing => propertyReferenceName;
-
- internal override bool AllowHLSLDeclaration(HLSLDeclaration decl) => false; // disable UI, nothing to choose
-
- internal override void ForeachHLSLProperty(Action<HLSLProperty> action)
- {
- action(new HLSLProperty(HLSLType._SamplerState, propertyReferenceName, HLSLDeclaration.Global));
- }
-
- internal override string GetPropertyAsArgumentString(string precisionString)
- {
- return $"UnitySamplerState {referenceName}";
- }
-
- internal override string GetHLSLVariableName(bool isSubgraphProperty, GenerationMode mode)
- {
- if (isSubgraphProperty)
- return referenceName;
- else
- return $"UnityBuildSamplerStateStruct({propertyReferenceName})";
- }
-
- internal override AbstractMaterialNode ToConcreteNode()
- {
- return new SamplerStateNode()
- {
- filter = value.filter,
- wrap = value.wrap
- };
- }
-
- internal override PreviewProperty GetPreviewMaterialProperty()
- {
- return default(PreviewProperty);
- }
-
- internal override ShaderInput Copy()
- {
- return new SamplerStateShaderProperty()
- {
- displayName = displayName,
- value = value,
- };
- }
-
- public override int latestVersion => 1;
- public override void OnAfterDeserialize(string json)
- {
- if (sgVersion == 0)
- {
- // we no longer require forced reference names on sampler state properties
- // as we enforce custom property naming by simply not using the reference name
- // this allows us to use the real reference name for subgraph parameters
- // however we must clear out the old reference name first (as it was always hard-coded)
- // this will fallback to the default ref name
- overrideReferenceName = null;
- var unused = referenceName;
- ChangeVersion(1);
- }
- }
- }
- }
|