Shader.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System;
  2. using System.Runtime.CompilerServices;
  3. namespace BansheeEngine
  4. {
  5. // Note: This must match C++ ShaderParameterType enum
  6. public enum ShaderParameterType
  7. {
  8. Float, Vector2, Vector3, Vector4, Color,
  9. Matrix3, Matrix4, Texture2D,
  10. Texture3D, TextureCube, Sampler
  11. }
  12. public struct ShaderParameter
  13. {
  14. public ShaderParameter(string name, ShaderParameterType type)
  15. {
  16. this.name = name;
  17. this.type = type;
  18. }
  19. public string name;
  20. public ShaderParameterType type;
  21. }
  22. public class Shader : Resource
  23. {
  24. // For internal use by the runtime
  25. private Shader()
  26. { }
  27. public ShaderParameter[] Parameters
  28. {
  29. get
  30. {
  31. string[] names;
  32. ShaderParameterType[] types;
  33. Internal_GetShaderParameters(mCachedPtr, out names, out types);
  34. ShaderParameter[] parameters = new ShaderParameter[names.Length];
  35. for (int i = 0; i < names.Length; i++)
  36. {
  37. parameters[i] = new ShaderParameter(names[i], types[i]);
  38. }
  39. return parameters;
  40. }
  41. }
  42. [MethodImpl(MethodImplOptions.InternalCall)]
  43. private static extern void Internal_GetShaderParameters(IntPtr nativeInstance, out string[] names, out ShaderParameterType[] types);
  44. }
  45. }