Нет описания
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

CubemapShaderProperty.cs 2.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using System;
  2. using System.Text;
  3. using UnityEditor.Graphing;
  4. using UnityEngine;
  5. namespace UnityEditor.ShaderGraph.Internal
  6. {
  7. [Serializable]
  8. [FormerName("UnityEditor.ShaderGraph.CubemapShaderProperty")]
  9. [BlackboardInputInfo(53)]
  10. public sealed class CubemapShaderProperty : AbstractShaderProperty<SerializableCubemap>
  11. {
  12. internal CubemapShaderProperty()
  13. {
  14. displayName = "Cubemap";
  15. value = new SerializableCubemap();
  16. }
  17. public override PropertyType propertyType => PropertyType.Cubemap;
  18. internal override bool isExposable => true;
  19. internal override bool isRenamable => true;
  20. internal string modifiableTagString => modifiable ? "" : "[NonModifiableTextureData]";
  21. internal override string GetPropertyBlockString()
  22. {
  23. return $"{hideTagString}{modifiableTagString}[NoScaleOffset]{referenceName}(\"{displayName}\", CUBE) = \"\" {{}}";
  24. }
  25. internal override bool AllowHLSLDeclaration(HLSLDeclaration decl) => (decl != HLSLDeclaration.HybridPerInstance) && (decl != HLSLDeclaration.DoNotDeclare);
  26. internal override void ForeachHLSLProperty(Action<HLSLProperty> action)
  27. {
  28. action(new HLSLProperty(HLSLType._TextureCube, referenceName, HLSLDeclaration.Global));
  29. action(new HLSLProperty(HLSLType._SamplerState, "sampler" + referenceName, HLSLDeclaration.Global));
  30. }
  31. internal override string GetPropertyAsArgumentString(string precisionString)
  32. {
  33. return "UnityTextureCube " + referenceName;
  34. }
  35. internal override string GetPropertyAsArgumentStringForVFX(string precisionString)
  36. {
  37. return "TEXTURECUBE(" + referenceName + ")";
  38. }
  39. internal override string GetHLSLVariableName(bool isSubgraphProperty, GenerationMode mode)
  40. {
  41. if (isSubgraphProperty)
  42. return referenceName;
  43. else
  44. return $"UnityBuildTextureCubeStruct({referenceName})";
  45. }
  46. [SerializeField]
  47. bool m_Modifiable = true;
  48. internal bool modifiable
  49. {
  50. get => m_Modifiable;
  51. set => m_Modifiable = value;
  52. }
  53. internal override AbstractMaterialNode ToConcreteNode()
  54. {
  55. return new CubemapAssetNode { cubemap = value.cubemap };
  56. }
  57. internal override PreviewProperty GetPreviewMaterialProperty()
  58. {
  59. return new PreviewProperty(propertyType)
  60. {
  61. name = referenceName,
  62. cubemapValue = value.cubemap
  63. };
  64. }
  65. internal override ShaderInput Copy()
  66. {
  67. return new CubemapShaderProperty()
  68. {
  69. displayName = displayName,
  70. value = value,
  71. };
  72. }
  73. }
  74. }