PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/Utilities/Graphics/ShaderFeatures/FresnelShaderFeature.cs

#
C# | 108 lines | 65 code | 9 blank | 34 comment | 0 complexity | 181469420a682f2015029414f8fa1fdb MD5 | raw file
Possible License(s): Apache-2.0
  1. using System.Collections.Generic;
  2. using System.IO;
  3. namespace Delta.Utilities.Graphics.ShaderFeatures
  4. {
  5. /// <summary>
  6. /// Fresnel shader feature
  7. /// </summary>
  8. public class FresnelShaderFeature : IShaderFeature
  9. {
  10. #region FresnelPower (Public)
  11. /// <summary>
  12. /// Fresnel power.
  13. /// </summary>
  14. public float FresnelPower = ShaderConstants.DefaultSpecularPower;
  15. #endregion
  16. #region FresnelFactor (Public)
  17. /// <summary>
  18. /// Fresnel factor.
  19. /// </summary>
  20. public float FresnelFactor = ShaderConstants.DefaultFresnelFactor;
  21. #endregion
  22. #region ShaderFeature (Public)
  23. /// <summary>
  24. /// Which shader feature flag is this ShaderFeature class using?
  25. /// Important for loading this file via ShaderData.LoadShaderFeature.
  26. /// Each flag should obviously only have one class for it!
  27. /// </summary>
  28. public ShaderFeatureFlags ShaderFeature
  29. {
  30. get
  31. {
  32. return ShaderFeatureFlags.Fresnel;
  33. }
  34. }
  35. #endregion
  36. #region RequiredShaderFeatures (Public)
  37. /// <summary>
  38. /// Which shader feature flags are required for this ShaderFeature.
  39. /// Very important for creating of a new ShaderFeature.
  40. /// </summary>
  41. public ShaderFeatureFlags RequiredShaderFeatures
  42. {
  43. get
  44. {
  45. return ShaderFeatureFlags.Specular;
  46. }
  47. }
  48. #endregion
  49. #region Parameters (Public)
  50. /// <summary>
  51. /// Parameters as a dictionary, will be generated on the fly when
  52. /// requested.
  53. /// </summary>
  54. public Dictionary<string, object> Parameters
  55. {
  56. get
  57. {
  58. Dictionary<string, object> ret = new Dictionary<string, object>();
  59. ret.Add("FresnelPower", FresnelPower);
  60. ret.Add("FresnelFactor", FresnelFactor);
  61. return ret;
  62. }
  63. }
  64. #endregion
  65. #region Constructors
  66. /// <summary>
  67. /// Create fresnel shader feature
  68. /// </summary>
  69. public FresnelShaderFeature()
  70. {
  71. }
  72. /// <summary>
  73. /// Create fresnel shader feature
  74. /// </summary>
  75. public FresnelShaderFeature(BinaryReader reader)
  76. {
  77. Load(reader);
  78. }
  79. #endregion
  80. #region ISaveLoadBinary Members
  81. /// <summary>
  82. /// Load this ShaderFeature from a binary data stream.
  83. /// </summary>
  84. public void Load(BinaryReader reader)
  85. {
  86. FresnelPower = reader.ReadSingle();
  87. FresnelFactor = reader.ReadSingle();
  88. }
  89. /// <summary>
  90. /// Save this ShaderFeature to a binary data stream.
  91. /// </summary>
  92. public void Save(BinaryWriter writer)
  93. {
  94. writer.Write(FresnelPower);
  95. writer.Write(FresnelFactor);
  96. }
  97. #endregion
  98. }
  99. }