123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using System;
- using UnityEditor.Graphing;
- using UnityEditor.ShaderGraph.Drawing.Slots;
- using UnityEngine;
- using UnityEngine.UIElements;
-
- namespace UnityEditor.ShaderGraph
- {
- [Serializable]
- class ScreenPositionMaterialSlot : Vector4MaterialSlot, IMayRequireScreenPosition, IMayRequireNDCPosition, IMayRequirePixelPosition
- {
- [SerializeField]
- ScreenSpaceType m_ScreenSpaceType;
-
- public ScreenSpaceType screenSpaceType
- {
- get { return m_ScreenSpaceType; }
- set { m_ScreenSpaceType = value; }
- }
-
- public override bool isDefaultValue => screenSpaceType == ScreenSpaceType.Default;
-
- public ScreenPositionMaterialSlot()
- { }
-
- public ScreenPositionMaterialSlot(int slotId, string displayName, string shaderOutputName, ScreenSpaceType screenSpaceType,
- ShaderStageCapability stageCapability = ShaderStageCapability.All, bool hidden = false)
- : base(slotId, displayName, shaderOutputName, SlotType.Input, Vector3.zero, stageCapability, hidden: hidden)
- {
- this.screenSpaceType = screenSpaceType;
- }
-
- public override VisualElement InstantiateControl()
- {
- return new ScreenPositionSlotControlView(this);
- }
-
- public override string GetDefaultValue(GenerationMode generationMode)
- {
- return m_ScreenSpaceType.ToValueAsVariable();
- }
-
- public bool RequiresScreenPosition(ShaderStageCapability stageCapability)
- {
- return !isConnected && screenSpaceType.RequiresScreenPosition();
- }
- public bool RequiresNDCPosition(ShaderStageCapability stageCapability)
- {
- return !isConnected && screenSpaceType.RequiresNDCPosition();
- }
- public bool RequiresPixelPosition(ShaderStageCapability stageCapability)
- {
- return !isConnected && screenSpaceType.RequiresPixelPosition();
- }
-
- public override void CopyValuesFrom(MaterialSlot foundSlot)
- {
- var slot = foundSlot as ScreenPositionMaterialSlot;
- if (slot != null)
- screenSpaceType = slot.screenSpaceType;
- }
- }
- }
|