Standard3dShaderDefinition.cs 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace Funly.SkyStudio
  5. {
  6. public class Standard3dShaderDefinition : BaseShaderDefinition
  7. {
  8. public const float MaxStarSize = .2f;
  9. public const float MaxStarDensity = 1.0f;
  10. public const float MinEdgeFeathering = 0.0001f;
  11. public const float MinStarFadeBegin = -.999f;
  12. public const float MaxSpriteItems = 100000;
  13. public const float MinRotationSpeed = -10.0f;
  14. public const float MaxRotationSpeed = 10.0f;
  15. public const float MaxCloudRotationSpeed = .5f;
  16. public const float MaxHDRValue = 25.0f;
  17. public Standard3dShaderDefinition()
  18. {
  19. shaderName = "Funly/Sky Studio/Skybox/3D Standard";
  20. }
  21. protected override ProfileFeatureSection[] ProfileFeatureSection()
  22. {
  23. return new[]
  24. {
  25. new ProfileFeatureSection("Features", ProfileSectionKeys.FeaturesSectionKey, new []
  26. {
  27. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.MobileQualityFeature, false, "Use Mobile Features (Faster)", null, false,
  28. "Enables Sky Studio to render in mobile mode, which has simplified options and settings for low-end devices"),
  29. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.GradientSkyFeature, ShaderKeywords.Gradient, true, "Gradient Background", null, false,
  30. "Enables gradient background feature in shader as an alternative to a cubemap background."),
  31. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.SunFeature, ShaderKeywords.Sun, false, "Sun", null, false,
  32. "Enables sun feature in skybox shader."),
  33. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.MoonFeature, ShaderKeywords.Moon, false, "Moon", null, false,
  34. "Enables moon feature in skybox shader."),
  35. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.CloudFeature, ShaderKeywords.Clouds, false, "Clouds", null, false,
  36. "Enables cloud feature in the skybox shader."),
  37. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.FogFeature, ShaderKeywords.Fog, false, "Fog", null, false,
  38. "Enables fog feature in the skybox shader."),
  39. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarBasicFeature, ShaderKeywords.StarsBasic, false, "Stars (Mobile)", ProfileFeatureKeys.MobileQualityFeature, true,
  40. "Enable fast simple cubemap stars designed for mobile devices for faster rendering."),
  41. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer1Feature, ShaderKeywords.StarLayer1, false, "Star Layer 1", ProfileFeatureKeys.MobileQualityFeature, false,
  42. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  43. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer2Feature, ShaderKeywords.StarLayer2, false, "Star Layer 2", ProfileFeatureKeys.MobileQualityFeature, false,
  44. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  45. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer3Feature, ShaderKeywords.StarLayer3, false, "Star Layer 3", ProfileFeatureKeys.MobileQualityFeature, false,
  46. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  47. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.RainFeature, false, "Rain", null, false,
  48. "Enables animated rain in the scene."),
  49. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.RainSplashFeature, false, "Rain Surface Splashes", null, false,
  50. "Enables surface splashes to simulate raindrops hitting the ground and other scene objects."),
  51. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.LightningFeature, false, "Lightning", null, false,
  52. "Enables lighting bolts in the scene at user staged spawn areas.")
  53. }),
  54. new ProfileFeatureSection("Sky", ProfileSectionKeys.SkySectionKey, new[] {
  55. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.VertexGradientSkyFeature, ShaderKeywords.VertexGradient, false, "Use Vertex Gradient (Faster)", null, false,
  56. "If enabled the background gradient colors will be calculated per vertex (which is very fast on low-end hardware) as opposed to per pixel fragment." )
  57. }),
  58. new ProfileFeatureSection("Sun", ProfileSectionKeys.SunSectionKey, new []
  59. {
  60. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.SunCustomTextureFeature, ShaderKeywords.SunCustomTexture, false, "Use Custom Texture", null, false,
  61. "Enables a custom texture to be used for the sun."),
  62. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.SunSpriteSheetFeature, ShaderKeywords.SunSpriteSheet, false, "Texture Is Sprite Sheet Animation", ProfileFeatureKeys.SunCustomTextureFeature, true,
  63. "If enabled the sun texture will be used as a sprite sheet animation."),
  64. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.SunAlphaBlendFeature, ShaderKeywords.SunAlphaBlend, false, "Use Alpha Blending", ProfileFeatureKeys.SunCustomTextureFeature, true,
  65. "Enables alpha blending of the sun texture into the background. If disabled additive blending will be used."),
  66. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.SunRotationFeature, ShaderKeywords.SunRotation, false, "Animate Sun Rotation", ProfileFeatureKeys.SunCustomTextureFeature, true,
  67. "If enabled the sun texture will rotate using the rotation speed property"),
  68. }),
  69. new ProfileFeatureSection("Moon", ProfileSectionKeys.MoonSectionKey, new []
  70. {
  71. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.MoonCustomTextureFeature, ShaderKeywords.MoonCustomTexture, false, "Use Custom Texture", null, false,
  72. "Enables a custom texture to be used for the moon."),
  73. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.MoonSpriteSheetFeature, ShaderKeywords.MoonSpriteSheet, false, "Texture Is Sprite Sheet Animation", ProfileFeatureKeys.MoonCustomTextureFeature, true,
  74. "If enabled the moon texture will be used as a sprite sheet animation."),
  75. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.MoonAlphaBlendFeature, ShaderKeywords.MoonAlphaBlend, false, "Use Alpha Blending", ProfileFeatureKeys.MoonCustomTextureFeature, true,
  76. "Enables alpha blending of the moon texture into the background. If disabled additive blending will be used."),
  77. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.MoonRotationFeature, ShaderKeywords.MoonRotation, false, "Animate Moon Rotation", ProfileFeatureKeys.MoonCustomTextureFeature, true,
  78. "If enabled the moon texture will rotate using the rotation speed property"),
  79. }),
  80. new ProfileFeatureSection("Star Layer 1", ProfileSectionKeys.Star1SectionKey, new []
  81. {
  82. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer1CustomTextureFeature, ShaderKeywords.StarLayer1CustomTexture, false, "Use Custom Texture", null, false,
  83. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  84. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer1SpriteSheetFeature, ShaderKeywords.StarLayer1SpriteSheet, false, "Texture Is Sprite Sheet Animation", ProfileFeatureKeys.StarLayer1CustomTextureFeature, true,
  85. "If enabled star texture will be used as a sprite sheet animation."),
  86. }),
  87. new ProfileFeatureSection("Star Layer 2", ProfileSectionKeys.Star2SectionKey, new []
  88. {
  89. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer2CustomTextureFeature, ShaderKeywords.StarLayer2CustomTexture, false, "Use Custom Texture", null, false,
  90. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  91. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer2SpriteSheetFeature, ShaderKeywords.StarLayer2SpriteSheet, false, "Texture Is Sprite Sheet Animation", ProfileFeatureKeys.StarLayer2CustomTextureFeature, true,
  92. "If enabled star texture will be used as a sprite sheet animation."),
  93. }),
  94. new ProfileFeatureSection("Clouds", ProfileSectionKeys.CloudSectionKey, new [] {
  95. ProfileFeatureDefinition.CreateShaderFeatureDropdown(
  96. new [] { ProfileFeatureKeys.NoiseCloudFeature, ProfileFeatureKeys.CubemapCloudFeature, ProfileFeatureKeys.CubemapNormalCloudFeature },
  97. new [] { ShaderKeywords.NoiseClouds, ShaderKeywords.CubemapClouds, ShaderKeywords.CubemapNormalClouds },
  98. new [] { "Standard Clouds", "Cubemap Clouds", "Cubemap Lit Clouds" },
  99. 0, "Cloud Type", ProfileFeatureKeys.CloudFeature, true,
  100. "Use the standard soft clouds, or use a fully art customizable cubemap for clouds."),
  101. // Texture formats for cubemap clouds.
  102. ProfileFeatureDefinition.CreateShaderFeatureDropdown(
  103. new [] { ProfileFeatureKeys.CubemapCloudTextureFormatRGBFeature, ProfileFeatureKeys.CubemapCloudTextureFormatRGBAFeature },
  104. new [] { ShaderKeywords.CubemapCloudTextureFormatRGB, ShaderKeywords.CubemapCloudTextureFormatRGBA },
  105. new [] { "RGB - Additive texture", "RGBA - Alpha texture" },
  106. 1, "Cloud Texture Format", ProfileFeatureKeys.CubemapCloudFeature, true,
  107. "Texture format so the shader knows how to load and blend the clouds into the background."),
  108. // Double layer Cubemap.
  109. ProfileFeatureDefinition.CreateShaderFeature(
  110. ProfileFeatureKeys.CubemapCloudDoubleLayerFeature, ShaderKeywords.CubemapCloudDoubleLayer, false, "Double Layer Clouds", ProfileFeatureKeys.CubemapCloudFeature, true,
  111. "If enabled, the skybox will render 2 layers of clouds which gives a sense of relative cloud motion in the sky."),
  112. ProfileFeatureDefinition.CreateShaderFeature(
  113. ProfileFeatureKeys.CubemapCloudDoubleLayerCubemapFeature, ShaderKeywords.CubemapCloudDoubleLayerCustomTexture, false, "Double Layer Uses Custom Cubemap",
  114. ProfileFeatureKeys.CubemapCloudDoubleLayerFeature, true,
  115. "If enabled, you can specify a custom texture to be used as the double layer. If disabled the same cloud texture will be used at a different rotation offset"
  116. ),
  117. // Double layer Cubemap Normals.
  118. ProfileFeatureDefinition.CreateShaderFeature(
  119. ProfileFeatureKeys.CubemapNormalCloudDoubleLayerFeature, ShaderKeywords.CubemapNormalCloudDoubleLayer, false, "Double Layer Clouds", ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  120. "If enabled, the skybox will render 2 layers of clouds which gives a sense of relative cloud motion in the sky."),
  121. }),
  122. new ProfileFeatureSection("Star Layer 3", ProfileSectionKeys.Star3SectionKey, new []
  123. {
  124. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer3CustomTextureFeature, ShaderKeywords.StarLayer3CustomTexture, false, "Use Custom Texture", null, false,
  125. "Enables a layer of stars in the shader. Use less star layers for better performance."),
  126. ProfileFeatureDefinition.CreateShaderFeature(ProfileFeatureKeys.StarLayer3SpriteSheetFeature, ShaderKeywords.StarLayer3SpriteSheet, false, "Texture Is Sprite Sheet Animation", ProfileFeatureKeys.StarLayer3CustomTextureFeature, true,
  127. "If enabled star texture will be used as a sprite sheet animation."),
  128. }),
  129. new ProfileFeatureSection("Rain", ProfileSectionKeys.RainSectionKey, new [] {
  130. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.RainSoundFeature, true, "Rain Sound", null, false,
  131. "Plays sound clip of rain in a loop.")
  132. }),
  133. new ProfileFeatureSection("Lightning", ProfileSectionKeys.LightningSectionKey, new [] {
  134. ProfileFeatureDefinition.CreateBooleanFeature(ProfileFeatureKeys.ThunderFeature, true, "Thunder Sounds", ProfileFeatureKeys.LightningFeature, true,
  135. "If enabled thunder sound effects will happen when lightning bolts strike.")
  136. })
  137. };
  138. }
  139. // Override this to return a different set of shader options.
  140. protected override ProfileGroupSection[] ProfileDefinitionTable()
  141. {
  142. return new[] {
  143. // Sky Section.
  144. new ProfileGroupSection("Sky", ProfileSectionKeys.SkySectionKey, "SkySectionIcon", null, false, new[]
  145. {
  146. ProfileGroupDefinition.TextureGroupDefinition(
  147. "Sky Cubemap", ProfilePropertyKeys.SkyCubemapKey, null, ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, false,
  148. "Image used as background for the skybox."),
  149. ProfileGroupDefinition.ColorGroupDefinition(
  150. "Sky Upper Color", ProfilePropertyKeys.SkyUpperColorKey, ColorHelper.ColorWithHex(0x2C2260),
  151. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  152. "Top color of the sky when using a gradient background."),
  153. ProfileGroupDefinition.ColorGroupDefinition(
  154. "Sky Middle Color", ProfilePropertyKeys.SkyMiddleColorKey, Color.white,
  155. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  156. "Middle color of the sky when using the gradient background."),
  157. ProfileGroupDefinition.ColorGroupDefinition(
  158. "Sky Lower Color", ProfilePropertyKeys.SkyLowerColorKey, ColorHelper.ColorWithHex(0xE3C882),
  159. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  160. "Bottom color of the sky when using a gradient background."),
  161. ProfileGroupDefinition.NumberGroupDefinition(
  162. "Sky Middle Color Balance", ProfilePropertyKeys.SkyMiddleColorPositionKey, 0, 1, .5f,
  163. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  164. "Shift the middle color closer to lower color or closer upper color to alter the gradient balance."),
  165. ProfileGroupDefinition.NumberGroupDefinition(
  166. "Horizon Position", ProfilePropertyKeys.HorizonTrasitionStartKey, -1, 1, -.3f,
  167. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  168. "This vertical position controls where the gradient background will begin."),
  169. ProfileGroupDefinition.NumberGroupDefinition(
  170. "Sky Gradient Length", ProfilePropertyKeys.HorizonTransitionLengthKey, 0, 2, 1,
  171. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.GradientSkyFeature, true,
  172. "The length of the background gradient fade from the bottom color to the top color."),
  173. ProfileGroupDefinition.NumberGroupDefinition("Star Start", ProfilePropertyKeys.StarTransitionStartKey, -1, 1, .2f,
  174. "Vertical position where the stars will begin fading in from. Typically this is just above the horizon."),
  175. ProfileGroupDefinition.NumberGroupDefinition("Star Transition Length", ProfilePropertyKeys.StarTransitionLengthKey, 0, 2, .5f,
  176. "The length of the fade-in where stars go from invisible to visible."),
  177. ProfileGroupDefinition.NumberGroupDefinition("Star Distance Scale", ProfilePropertyKeys.HorizonStarScaleKey, .01f, 1, .7f,
  178. "Scale value applied to stars closers to the horizon for distance effect."),
  179. }),
  180. // Sun section.
  181. new ProfileGroupSection("Sun", ProfileSectionKeys.SunSectionKey, "SunSectionIcon", ProfileFeatureKeys.SunFeature, true, new[]
  182. {
  183. ProfileGroupDefinition.ColorGroupDefinition("Sun Color", ProfilePropertyKeys.SunColorKey, ColorHelper.ColorWithHex(0xFFE000),
  184. "Color of the sun."),
  185. ProfileGroupDefinition.TextureGroupDefinition("Sun Texture", ProfilePropertyKeys.SunTextureKey, null,
  186. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.SunCustomTextureFeature, true,
  187. "Texture used for the sun."),
  188. ProfileGroupDefinition.NumberGroupDefinition("Sun Sprite Columns", ProfilePropertyKeys.SunSpriteColumnCountKey,
  189. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.SunSpriteSheetFeature, true,
  190. "Number of columns in the sprite sheet."),
  191. ProfileGroupDefinition.NumberGroupDefinition("Sun Sprite Rows", ProfilePropertyKeys.SunSpriteRowCountKey,
  192. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.SunSpriteSheetFeature, true,
  193. "Number of rows in the sprite sheet."),
  194. ProfileGroupDefinition.NumberGroupDefinition("Sun Sprite Item Count", ProfilePropertyKeys.SunSpriteItemCountKey,
  195. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.SunSpriteSheetFeature, true,
  196. "Number of columns in the sprite sheet."),
  197. ProfileGroupDefinition.NumberGroupDefinition("Sun Sprite Animation Speed", ProfilePropertyKeys.SunSpriteAnimationSpeedKey,
  198. 0.0f, 90.0f, 15.0f, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.SunSpriteSheetFeature, true,
  199. "Frames per second to flip through the sprite images."),
  200. ProfileGroupDefinition.NumberGroupDefinition("Sun Rotation Speed", ProfilePropertyKeys.SunRotationSpeedKey, MinRotationSpeed, MaxRotationSpeed, 1,
  201. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.SunRotationFeature, true,
  202. "Speed value for sun texture rotation animation."),
  203. ProfileGroupDefinition.NumberGroupDefinition("Sun Size", ProfilePropertyKeys.SunSizeKey, 0, 1, .1f,
  204. "Size of the sun."),
  205. ProfileGroupDefinition.NumberGroupDefinition("Sun Edge Feathering", ProfilePropertyKeys.SunEdgeFeatheringKey, MinEdgeFeathering, 1, .8f,
  206. "Percent amount of gradient fade-in from the sun edges to it's center point."),
  207. ProfileGroupDefinition.NumberGroupDefinition("Sun Bloom Intensity", ProfilePropertyKeys.SunColorIntensityKey, 1, MaxHDRValue, 1,
  208. "Value that's multiplied against the suns color to intensify bloom effects."),
  209. ProfileGroupDefinition.ColorGroupDefinition("Sun Light Color", ProfilePropertyKeys.SunLightColorKey, Color.white,
  210. "Color of the directional light coming from the sun."),
  211. ProfileGroupDefinition.NumberGroupDefinition("Sun Light Intensity", ProfilePropertyKeys.SunLightIntensityKey, 0, 5, 1,
  212. "Intensity of the directional light coming from the sun."),
  213. ProfileGroupDefinition.SpherePointGroupDefinition("Sun Position", ProfilePropertyKeys.SunPositionKey, 0, 0,
  214. "Position of the sun in the skybox expressed as a horizontal and vertical rotation.")
  215. }),
  216. // Moon section.
  217. new ProfileGroupSection("Moon", ProfileSectionKeys.MoonSectionKey, "MoonSectionIcon", ProfileFeatureKeys.MoonFeature, true, new[]
  218. {
  219. ProfileGroupDefinition.ColorGroupDefinition("Moon Color", ProfilePropertyKeys.MoonColorKey, ColorHelper.ColorWithHex(0x989898),
  220. "Color of the moon."),
  221. ProfileGroupDefinition.TextureGroupDefinition("Moon Texture", ProfilePropertyKeys.MoonTextureKey, null,
  222. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.MoonCustomTextureFeature, true,
  223. "Texture used for the moon"),
  224. ProfileGroupDefinition.NumberGroupDefinition("Moon Sprite Columns", ProfilePropertyKeys.MoonSpriteColumnCountKey,
  225. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.MoonSpriteSheetFeature, true,
  226. "Number of columns in the moon sprite sheet."),
  227. ProfileGroupDefinition.NumberGroupDefinition("Moon Sprite Rows", ProfilePropertyKeys.MoonSpriteRowCountKey,
  228. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.MoonSpriteSheetFeature, true,
  229. "Number of rows in the moon sprite sheet."),
  230. ProfileGroupDefinition.NumberGroupDefinition("Moon Sprite Item Count", ProfilePropertyKeys.MoonSpriteItemCountKey,
  231. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.MoonSpriteSheetFeature, true,
  232. "Number of columns in the moon sprite sheet."),
  233. ProfileGroupDefinition.NumberGroupDefinition("Moon Sprite Animation Speed", ProfilePropertyKeys.MoonSpriteAnimationSpeedKey,
  234. 0.0f, 90.0f, 15.0f, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.MoonSpriteSheetFeature, true,
  235. "Frames per second to flip through the sprite images."),
  236. ProfileGroupDefinition.NumberGroupDefinition("Moon Rotation Speed", ProfilePropertyKeys.MoonRotationSpeedKey, MinRotationSpeed, MaxRotationSpeed, 1,
  237. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.MoonRotationFeature, true,
  238. "Speed value for moon texture rotation animation."),
  239. ProfileGroupDefinition.NumberGroupDefinition("Moon Size", ProfilePropertyKeys.MoonSizeKey, 0, 1, .08f,
  240. "Size of the moon."),
  241. ProfileGroupDefinition.NumberGroupDefinition("Moon Edge Feathering", ProfilePropertyKeys.MoonEdgeFeatheringKey, MinEdgeFeathering, 1, .1f,
  242. "Percentage of fade-in from edge to the center of the moon."),
  243. ProfileGroupDefinition.NumberGroupDefinition("Moon Bloom Intensity", ProfilePropertyKeys.MoonColorIntensityKey, 1, MaxHDRValue, 1,
  244. "Value multiplied with the moon color to help intensify bloom filters."),
  245. ProfileGroupDefinition.ColorGroupDefinition("Moon Light Color", ProfilePropertyKeys.MoonLightColorKey, Color.white,
  246. "Color of the directional light coming from the moon."),
  247. ProfileGroupDefinition.NumberGroupDefinition("Moon Light Intensity", ProfilePropertyKeys.MoonLightIntensityKey, 0, 5, 1,
  248. "Intensity of the directional light coming from the moon."),
  249. ProfileGroupDefinition.SpherePointGroupDefinition("Moon Position", ProfilePropertyKeys.MoonPositionKey, 0, 0,
  250. "Position of the moon in the skybox expressed as a horizontal and vertical rotation.")
  251. }),
  252. // Clouds.
  253. new ProfileGroupSection("Clouds", ProfileSectionKeys.CloudSectionKey, "CloudSectionIcon", ProfileFeatureKeys.CloudFeature, true, new[]
  254. {
  255. // Cubemap clouds.
  256. ProfileGroupDefinition.TextureGroupDefinition("Cloud Cubemap", ProfilePropertyKeys.CloudCubemapTextureKey, null, ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.CubemapCloudFeature, true,
  257. "Cubemap texture with clouds to render"),
  258. ProfileGroupDefinition.NumberGroupDefinition("Cloud Cubemap Rotation Speed", ProfilePropertyKeys.CloudCubemapRotationSpeedKey, -MaxCloudRotationSpeed, MaxCloudRotationSpeed, .1f, ProfileFeatureKeys.CubemapCloudFeature, true,
  259. "Speed and direction to rotate the cloud cubemap in."),
  260. ProfileGroupDefinition.NumberGroupDefinition("Cloud Cubemap Height", ProfilePropertyKeys.CloudCubemapHeightKey, -1.0f, 1.0f, 0, ProfileFeatureKeys.CubemapCloudFeature, true,
  261. "Adjust the horizon height of the cloud cubemap."),
  262. ProfileGroupDefinition.ColorGroupDefinition("Cloud Cubemap Tint Color", ProfilePropertyKeys.CloudCubemapTintColorKey, Color.white, ProfileFeatureKeys.CubemapCloudFeature, true,
  263. "Tint color that will be multiplied against the cubemap texture color."),
  264. ProfileGroupDefinition.TextureGroupDefinition("Cloud Cubemap Double Layer Cubemap", ProfilePropertyKeys.CloudCubemapDoubleLayerCustomTextureKey, null, ProfileFeatureKeys.CubemapCloudDoubleLayerCubemapFeature, true,
  265. "Cubemap texture to use as the atmosphere layer for the clouds."),
  266. ProfileGroupDefinition.NumberGroupDefinition("Cloud Cubemap Double Layer Rotation Speed", ProfilePropertyKeys.CloudCubemapDoubleLayerRotationSpeedKey, -MaxCloudRotationSpeed, MaxCloudRotationSpeed, .15f, ProfileFeatureKeys.CubemapCloudDoubleLayerFeature, true,
  267. "Speed and direction to rotate the second layer of clouds."),
  268. ProfileGroupDefinition.NumberGroupDefinition("Cloud Cubemap Double Layer Height", ProfilePropertyKeys.CloudCubemapDoubleLayerHeightKey, -1.0f, 1.0f, 0, ProfileFeatureKeys.CubemapCloudDoubleLayerFeature, true,
  269. "Adjust the horizon height of the second cloud cubemap layer."),
  270. ProfileGroupDefinition.ColorGroupDefinition("Cloud Cubemap Double Layer Tint Color", ProfilePropertyKeys.CloudCubemapDoubleLayerTintColorKey, Color.white, ProfileFeatureKeys.CubemapCloudDoubleLayerFeature, true,
  271. "Tint color that will be multiplied against the double texture cubemap."),
  272. // Cubemap normal clouds.
  273. ProfileGroupDefinition.TextureGroupDefinition("Cloud Lit Cubemap", ProfilePropertyKeys.CloudCubemapNormalTextureKey, null, ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  274. "Cubemap texture with clouds to render"),
  275. ProfileGroupDefinition.ColorGroupDefinition("Cloud Lit - Light Color", ProfilePropertyKeys.CloudCubemapNormalLitColorKey, Color.white, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  276. "Color of the clouds when directly illuminated by a lighting. Typically the top side of the cloud."),
  277. ProfileGroupDefinition.ColorGroupDefinition("Cloud Lit - Shadow Color", ProfilePropertyKeys.CloudCubemapNormalShadowKey, Color.gray, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  278. "Color of the clouds when they are in a shadow. Typically the bottom side of the cloud."),
  279. ProfileGroupDefinition.NumberGroupDefinition("Cloud Lit - Rotation Speed", ProfilePropertyKeys.CloudCubemapNormalRotationSpeedKey, -MaxCloudRotationSpeed, MaxCloudRotationSpeed, .1f, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  280. "Speed and direction to rotate the cloud cubemap in."),
  281. ProfileGroupDefinition.NumberGroupDefinition("Cloud Lit - Height", ProfilePropertyKeys.CloudCubemapNormalHeightKey, -1.0f, 1.0f, 0, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  282. "Adjust the horizon height of the cloud cubemap."),
  283. ProfileGroupDefinition.NumberGroupDefinition("Cloud Lit - Ambient Intensity", ProfilePropertyKeys.CloudCubemapNormalAmbientIntensity, 0.0f, 1.0f, .1f, ProfileFeatureKeys.CubemapNormalCloudFeature, true,
  284. "Ambient light intensity used for minimum brightness in cloud lighting calculations."),
  285. ProfileGroupDefinition.TextureGroupDefinition("Cloud Lit - Double Layer Cubemap", ProfilePropertyKeys.CloudCubemapNormalDoubleLayerCustomTextureKey, null, ProfileFeatureKeys.CubemapNormalCloudDoubleLayerCubemapFeature, true,
  286. "Cubemap texture to use as the atmosphere layer for the clouds."),
  287. ProfileGroupDefinition.ColorGroupDefinition("Cloud Lit - Double Layer Lit Color", ProfilePropertyKeys.CloudCubemapNormalDoubleLayerLitColorKey, Color.white, ProfileFeatureKeys.CubemapNormalCloudDoubleLayerFeature, true,
  288. "Color of the clouds when directly illuminated by a lighting. Typically the top side of the cloud."),
  289. ProfileGroupDefinition.ColorGroupDefinition("Cloud Lit - Double Layer Shadow Color", ProfilePropertyKeys.CloudCubemapNormalDoubleLayerShadowKey, Color.gray, ProfileFeatureKeys.CubemapNormalCloudDoubleLayerFeature, true,
  290. "Color of the clouds when they are in a shadow. Typically the bottom side of the cloud."),
  291. ProfileGroupDefinition.NumberGroupDefinition("Cloud Lit - Double Layer Rotation Speed", ProfilePropertyKeys.CloudCubemapNormalDoubleLayerRotationSpeedKey, -MaxCloudRotationSpeed, MaxCloudRotationSpeed, .15f, ProfileFeatureKeys.CubemapNormalCloudDoubleLayerFeature, true,
  292. "Speed and direction to rotate the second layer of clouds."),
  293. ProfileGroupDefinition.NumberGroupDefinition("Cloud Lit - Double Layer Height", ProfilePropertyKeys.CloudCubemapNormalDoubleLayerHeightKey, -1.0f, 1.0f, 0, ProfileFeatureKeys.CubemapNormalCloudDoubleLayerFeature, true,
  294. "Adjust the horizon height of the second cloud cubemap layer."),
  295. // Standard Cloud Options.
  296. ProfileGroupDefinition.NumberGroupDefinition("Cloud Density", ProfilePropertyKeys.CloudDensityKey, 0, 1, .25f, ProfileFeatureKeys.NoiseCloudFeature, true,
  297. "Density controls the amount of clouds in the scene."),
  298. ProfileGroupDefinition.TextureGroupDefinition("Cloud Noise Texture", ProfilePropertyKeys.CloudNoiseTextureKey, null, ProfileFeatureKeys.NoiseCloudFeature, true,
  299. "Noise pattern used to generate the standard procedural clouds from. You can generate your own RGB noise textures with patterns to customize the visual style using photoshop and filters."),
  300. ProfileGroupDefinition.NumberGroupDefinition("Cloud Texture Tiling", ProfilePropertyKeys.CloudTextureTiling, .1f, 20.0f, .55f, ProfileFeatureKeys.NoiseCloudFeature, true,
  301. "Tiling changes the scale of the texture and how many times it will repeat in the sky. A higher number will increase visible resolution."),
  302. ProfileGroupDefinition.NumberGroupDefinition("Cloud Speed", ProfilePropertyKeys.CloudSpeedKey, 0, 1, .1f, ProfileFeatureKeys.NoiseCloudFeature, true,
  303. "Speed that the clouds move at as a percent from 0 to 1."),
  304. ProfileGroupDefinition.NumberGroupDefinition("Cloud Direction", ProfilePropertyKeys.CloudDirectionKey, 0, Mathf.PI * 2, 1, ProfileFeatureKeys.NoiseCloudFeature, true,
  305. "Direction that the clouds move in as an angle in radians between 0 and 2PI."),
  306. ProfileGroupDefinition.NumberGroupDefinition("Cloud Height", ProfilePropertyKeys.CloudHeightKey, 0, 1, .7f, ProfileFeatureKeys.NoiseCloudFeature, true,
  307. "Height (or altitude) of the clouds in the scene."),
  308. ProfileGroupDefinition.ColorGroupDefinition("Cloud Color 1", ProfilePropertyKeys.CloudColor1Key, Color.white, ProfileFeatureKeys.NoiseCloudFeature, true,
  309. "Primary color of the cloud features."),
  310. ProfileGroupDefinition.ColorGroupDefinition("Cloud Color 2", ProfilePropertyKeys.CloudColor2Key, Color.gray, ProfileFeatureKeys.NoiseCloudFeature, true,
  311. "Secondary color of the clouds between the primary features."),
  312. ProfileGroupDefinition.NumberGroupDefinition("Cloud Fade-Out Distance", ProfilePropertyKeys.CloudFadePositionKey, 0, 1, .7f, ProfileFeatureKeys.NoiseCloudFeature, true,
  313. "Distance at which the clouds will begin to fade away towards the horizon."),
  314. ProfileGroupDefinition.NumberGroupDefinition("Cloud Fade-Out Amount", ProfilePropertyKeys.CloudFadeAmountKey, 0, 1, .75f, ProfileFeatureKeys.NoiseCloudFeature, true,
  315. "This is the amount of fade out that will happen to clouds as they reach the horizon."),
  316. }),
  317. // Fog.
  318. new ProfileGroupSection("Fog", ProfileSectionKeys.FogSectionKey, "FogSectionIcon", ProfileFeatureKeys.FogFeature, true, new []
  319. {
  320. ProfileGroupDefinition.ColorGroupDefinition("Fog Color", ProfilePropertyKeys.FogColorKey, Color.white,
  321. "Color of the fog at the horizon."),
  322. ProfileGroupDefinition.NumberGroupDefinition("Fog Density", ProfilePropertyKeys.FogDensityKey, 0, 1, .12f,
  323. "Density, or thickness, of the fog to display at the horizon."),
  324. ProfileGroupDefinition.NumberGroupDefinition("Fog Height", ProfilePropertyKeys.FogLengthKey, .03f, 1, .1f,
  325. "The height of the fog as it extends from the horizon upwards into the sky"),
  326. ProfileGroupDefinition.BoolGroupDefinition("Update Global Fog Color", ProfilePropertyKeys.FogSyncWithGlobal, true, null, false,
  327. "Enable this to update the color of global fog, used by the rest of Unity, to match the current sky fog color from Sky Studio.")
  328. }),
  329. // Stars Basic.
  330. new ProfileGroupSection("Stars (Mobile)", ProfileSectionKeys.StarsBasicSectionKey, "StarSectionIcon", ProfileFeatureKeys.StarBasicFeature, true, new[]
  331. {
  332. ProfileGroupDefinition.TextureGroupDefinition("Star Cubemap", ProfilePropertyKeys.StarBasicCubemapKey, null,
  333. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarBasicFeature, true,
  334. "Cubemap image for basic stars on mobile."),
  335. ProfileGroupDefinition.NumberGroupDefinition("Star Twinkle Speed", ProfilePropertyKeys.StarBasicTwinkleSpeedKey, 0.0f, 10.0f, 1.0f,
  336. ProfileFeatureKeys.StarBasicFeature, true,
  337. "Speed at which the stars will twinkle at."),
  338. ProfileGroupDefinition.NumberGroupDefinition("Star Twinkle Amount", ProfilePropertyKeys.StarBasicTwinkleAmountKey, 0.0f, 1.0f, .75f,
  339. ProfileFeatureKeys.StarBasicFeature, true,
  340. "The amount of fade out that happens when stars twinkle."),
  341. ProfileGroupDefinition.NumberGroupDefinition("Star Opacity", ProfilePropertyKeys.StarBasicOpacityKey, 0.0f, 1.0f, 1.0f,
  342. ProfileFeatureKeys.StarBasicFeature, true,
  343. "Determines if stars are visible or not. Animate this property on the Sky Timeline to fade stars in/out in day-night cycles."),
  344. ProfileGroupDefinition.ColorGroupDefinition("Star Tint Color", ProfilePropertyKeys.StarBasicTintColorKey, Color.white,
  345. ProfileFeatureKeys.StarBasicFeature, true,
  346. "Tint color of the stars."),
  347. ProfileGroupDefinition.NumberGroupDefinition("Star Smoothing Exponent", ProfilePropertyKeys.StarBasicExponentKey, .5f, 5.0f, 1.1f,
  348. "Exponent used to smooth out the edges of the star texture."),
  349. ProfileGroupDefinition.NumberGroupDefinition("Star Bloom Intensity (HDR)", ProfilePropertyKeys.StarBasicIntensityKey, 1.0f, MaxHDRValue, 1.0f,
  350. "Intensity boost that's multiplied against the stars to help them glow with HDR bloom filters.")
  351. }),
  352. // Star 1 section.
  353. new ProfileGroupSection("Star Layer 1", ProfileSectionKeys.Star1SectionKey, "StarSectionIcon", ProfileFeatureKeys.StarLayer1Feature, true, new[]
  354. {
  355. ProfileGroupDefinition.TextureGroupDefinition(
  356. "Star 1 Texture", ProfilePropertyKeys.Star1TextureKey, null,
  357. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer1CustomTextureFeature, true,
  358. "Texture used for the star image."),
  359. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Sprite Columns", ProfilePropertyKeys.Star1SpriteColumnCountKey,
  360. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer1SpriteSheetFeature, true,
  361. "Number of columns in the sprite sheet."),
  362. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Sprite Rows", ProfilePropertyKeys.Star1SpriteRowCountKey,
  363. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer1SpriteSheetFeature, true,
  364. "Number of rows in the sprite sheet."),
  365. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Sprite Item Count", ProfilePropertyKeys.Star1SpriteItemCountKey,
  366. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer1SpriteSheetFeature, true,
  367. "Number of columns in the sprite sheet."),
  368. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Sprite Animation Speed", ProfilePropertyKeys.Star1SpriteAnimationSpeedKey,
  369. 0.0f, 90.0f, 15.0f, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer1SpriteSheetFeature, true,
  370. "Frames per second to flip through the sprite images."),
  371. ProfileGroupDefinition.NumberGroupDefinition(
  372. "Star 1 Rotation Speed", ProfilePropertyKeys.Star1RotationSpeedKey, MinRotationSpeed, MaxRotationSpeed, 0,
  373. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer1CustomTextureFeature, true,
  374. "Speed and direction the star rotates at."),
  375. ProfileGroupDefinition.ColorGroupDefinition("Star 1 Color", ProfilePropertyKeys.Star1ColorKey, Color.white,
  376. "Color of the star."),
  377. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Size", ProfilePropertyKeys.Star1SizeKey, 0, MaxStarSize, .005f,
  378. "Size of the star."),
  379. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Density", ProfilePropertyKeys.Star1DensityKey, 0, MaxStarDensity, .02f,
  380. ProfileGroupDefinition.RebuildType.Stars, null, false,
  381. "Density of the stars in this layer."),
  382. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Twinkle Amount", ProfilePropertyKeys.Star1TwinkleAmountKey, 0, 1, .7f,
  383. "Percentage amount of twinkle animation."),
  384. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Twinkle Speed", ProfilePropertyKeys.Star1TwinkleSpeedKey, 0, 10, 5,
  385. "Speed at which the star twinkles at."),
  386. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Edge Feathering", ProfilePropertyKeys.Star1EdgeFeatheringKey, 0.0001f, 1, .4f,
  387. "Percentage of fade-in from the stars edges to the center."),
  388. ProfileGroupDefinition.NumberGroupDefinition("Star 1 Bloom Intensity", ProfilePropertyKeys.Star1ColorIntensityKey, 1, MaxHDRValue, 1,
  389. "Value multiplied with the star color to intensify bloom filters."),
  390. }),
  391. // Star 2 section.
  392. new ProfileGroupSection("Star Layer 2", ProfileSectionKeys.Star2SectionKey, "StarSectionIcon", ProfileFeatureKeys.StarLayer2Feature, true, new[]
  393. {
  394. ProfileGroupDefinition.TextureGroupDefinition(
  395. "Star 2 Texture", ProfilePropertyKeys.Star2TextureKey, null,
  396. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer2CustomTextureFeature, true,
  397. "Texture used for the star image."),
  398. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Sprite Columns", ProfilePropertyKeys.Star2SpriteColumnCountKey,
  399. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer2SpriteSheetFeature, true,
  400. "Number of columns in the sprite sheet."),
  401. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Sprite Rows", ProfilePropertyKeys.Star2SpriteRowCountKey,
  402. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer2SpriteSheetFeature, true,
  403. "Number of rows in the sprite sheet."),
  404. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Sprite Item Count", ProfilePropertyKeys.Star2SpriteItemCountKey,
  405. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer2SpriteSheetFeature, true,
  406. "Number of columns in the sprite sheet."),
  407. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Sprite Animation Speed", ProfilePropertyKeys.Star2SpriteAnimationSpeedKey,
  408. 0.0f, 90.0f, 15.0f, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer2SpriteSheetFeature, true,
  409. "Frames per second to flip through the sprite images."),
  410. ProfileGroupDefinition.NumberGroupDefinition(
  411. "Star 2 Rotation Speed", ProfilePropertyKeys.Star2RotationSpeedKey, MinRotationSpeed, MaxRotationSpeed, 0,
  412. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer2CustomTextureFeature, true,
  413. "Speed and direction the star rotates at."),
  414. ProfileGroupDefinition.ColorGroupDefinition("Star 2 Color", ProfilePropertyKeys.Star2ColorKey, Color.white,
  415. "Color of the star."),
  416. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Size", ProfilePropertyKeys.Star2SizeKey, 0, MaxStarSize, .005f,
  417. "Size of the star."),
  418. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Density", ProfilePropertyKeys.Star2DensityKey, 0, MaxStarDensity, .01f,
  419. ProfileGroupDefinition.RebuildType.Stars, null, false,
  420. "Density of the stars in this layer."),
  421. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Twinkle Amount", ProfilePropertyKeys.Star2TwinkleAmountKey, 0, 1, .7f,
  422. "Texture used for the star image."),
  423. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Twinkle Speed", ProfilePropertyKeys.Star2TwinkleSpeedKey, 0, 10, 5,
  424. "Speed at which the star twinkles at."),
  425. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Edge Feathering", ProfilePropertyKeys.Star2EdgeFeatheringKey, MinEdgeFeathering, 1, .4f,
  426. "Percentage of fade-in from the stars edges to the center."),
  427. ProfileGroupDefinition.NumberGroupDefinition("Star 2 Bloom Intensity", ProfilePropertyKeys.Star2ColorIntensityKey, 1, MaxHDRValue, 1,
  428. "Value multiplied with the star color to intensify bloom filters."),
  429. }),
  430. // Star 3 section.
  431. new ProfileGroupSection("Star Layer 3", ProfileSectionKeys.Star3SectionKey, "StarSectionIcon", ProfileFeatureKeys.StarLayer3Feature, true, new[]
  432. {
  433. ProfileGroupDefinition.TextureGroupDefinition(
  434. "Star 3 Texture", ProfilePropertyKeys.Star3TextureKey, null,
  435. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer3CustomTextureFeature, true,
  436. "Texture used for the star image."),
  437. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Sprite Columns", ProfilePropertyKeys.Star3SpriteColumnCountKey,
  438. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer3SpriteSheetFeature, true,
  439. "Number of columns in the sprite sheet."),
  440. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Sprite Rows", ProfilePropertyKeys.Star3SpriteRowCountKey,
  441. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer3SpriteSheetFeature, true,
  442. "Number of rows in the sprite sheet."),
  443. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Sprite Item Count", ProfilePropertyKeys.Star3SpriteItemCountKey,
  444. 1, MaxSpriteItems, 1, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer3SpriteSheetFeature, true,
  445. "Number of columns in the sprite sheet."),
  446. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Sprite Animation Speed", ProfilePropertyKeys.Star3SpriteAnimationSpeedKey,
  447. 0.0f, 90.0f, 15.0f, ProfileGroupDefinition.RebuildType.None, ProfileGroupDefinition.FormatStyle.Integer, ProfileFeatureKeys.StarLayer3SpriteSheetFeature, true,
  448. "Frames per second to flip through the sprite images."),
  449. ProfileGroupDefinition.NumberGroupDefinition(
  450. "Star 3 Rotation Speed", ProfilePropertyKeys.Star3RotationSpeedKey, MinRotationSpeed, MaxRotationSpeed, 0,
  451. ProfileGroupDefinition.RebuildType.None, ProfileFeatureKeys.StarLayer3CustomTextureFeature, true,
  452. "Speed and direction the star rotates at."),
  453. ProfileGroupDefinition.ColorGroupDefinition("Star 3 Color", ProfilePropertyKeys.Star3ColorKey, Color.white,
  454. "Color of the star."),
  455. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Size", ProfilePropertyKeys.Star3SizeKey, 0, MaxStarSize, .005f,
  456. "Size of the star."),
  457. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Density", ProfilePropertyKeys.Star3DensityKey, 0, MaxStarDensity, .01f,
  458. ProfileGroupDefinition.RebuildType.Stars, null, false,
  459. "Density of the stars in this layer."),
  460. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Twinkle Amount", ProfilePropertyKeys.Star3TwinkleAmountKey, 0, 1, .7f,
  461. "Speed at which the star twinkles at."),
  462. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Twinkle Speed", ProfilePropertyKeys.Star3TwinkleSpeedKey, 0, 10, 5,
  463. "Speed at which the star twinkles at."),
  464. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Edge Feathering", ProfilePropertyKeys.Star3EdgeFeatheringKey, MinEdgeFeathering, 1, .4f,
  465. "Percentage of fade-in from the stars edges to the center."),
  466. ProfileGroupDefinition.NumberGroupDefinition("Star 3 Bloom Intensity", ProfilePropertyKeys.Star3ColorIntensityKey, 1, MaxHDRValue, 1,
  467. "Value multiplied with the star color to intensify bloom filters."),
  468. }),
  469. // Rain section.
  470. new ProfileGroupSection("Rain", ProfileSectionKeys.RainSectionKey, "RainSectionIcon", ProfileFeatureKeys.RainFeature, true, new ProfileGroupDefinition[] {
  471. ProfileGroupDefinition.NumberGroupDefinition("Rain Sound Volume", ProfilePropertyKeys.RainSoundVolumeKey, 0.0f, 1.0f, .5f, ProfileFeatureKeys.RainSoundFeature, true,
  472. "Set the volume of the rain effects."),
  473. ProfileGroupDefinition.TextureGroupDefinition("Rain Near Texture", ProfilePropertyKeys.RainNearTextureKey, null,
  474. "The rain texture used for animating rain drizzle in the near foreground."),
  475. ProfileGroupDefinition.NumberGroupDefinition("Rain Near Texture Tiling", ProfilePropertyKeys.RainNearTextureTiling, .01f, 20.0f, 1.0f,
  476. "Set the tiling amount for the near texture"),
  477. ProfileGroupDefinition.NumberGroupDefinition("Rain Near Visibility", ProfilePropertyKeys.RainNearIntensityKey, 0.0f, 1.0f, .3f,
  478. "Set the alpha visibility of the rain downfall effect of the near texture."),
  479. ProfileGroupDefinition.NumberGroupDefinition("Rain Near Speed", ProfilePropertyKeys.RainNearSpeedKey, 0.0f, 5.0f, 2.5f,
  480. "Set the speed of the near rain texture."),
  481. ProfileGroupDefinition.TextureGroupDefinition("Rain Far Texture", ProfilePropertyKeys.RainFarTextureKey, null,
  482. "The rain texture used for animating rain drizzle in the far background."),
  483. ProfileGroupDefinition.NumberGroupDefinition("Rain Far Texture Tiling", ProfilePropertyKeys.RainFarTextureTiling, .01f, 20.0f, 1.0f,
  484. "Set the tiling amount for the far texture"),
  485. ProfileGroupDefinition.NumberGroupDefinition("Rain Far Visibility", ProfilePropertyKeys.RainFarIntensityKey, 0.0f, 1.0f, .15f,
  486. "Set the alpha visibility of the rain downfall effect of the far texture."),
  487. ProfileGroupDefinition.NumberGroupDefinition("Rain Far Speed", ProfilePropertyKeys.RainFarSpeedKey, 0.0f, 5.0f, 2.0f,
  488. "Set the speed of the far rain texture."),
  489. ProfileGroupDefinition.ColorGroupDefinition("Rain Tint Color", ProfilePropertyKeys.RainTintColorKey, Color.white,
  490. "Tint color that will be multilied against the rain texture color."),
  491. ProfileGroupDefinition.NumberGroupDefinition("Rain Turbulence", ProfilePropertyKeys.RainWindTurbulence, 0.0f, 1.0f, .2f,
  492. "Set the amount of jitter in the rain texture animation."),
  493. ProfileGroupDefinition.NumberGroupDefinition("Rain Turbulence Speed", ProfilePropertyKeys.RainWindTurbulenceSpeed, 0.0f, 2.0f, .5f,
  494. "Set the speed at which the jitter animation is applied to the rain texture"),
  495. }),
  496. // Rain surface splashes.
  497. new ProfileGroupSection("Rain Surface Splashes", ProfileSectionKeys.RainSplashSectionKey, "RainSplashSectionIcon", ProfileFeatureKeys.RainSplashFeature, true, new ProfileGroupDefinition[] {
  498. ProfileGroupDefinition.NumberGroupDefinition("Splash Count", ProfilePropertyKeys.RainSplashMaxConcurrentKey, 0, 1000, 400,
  499. "Number of raindrop splashes that will be placed into the scene."),
  500. ProfileGroupDefinition.NumberGroupDefinition("Splash Area Start", ProfilePropertyKeys.RainSplashAreaStartKey, 0, 50.0f, 1.5f,
  501. "The closest distance from the main camera where rain splashes can be spawned at."),
  502. ProfileGroupDefinition.NumberGroupDefinition("Splash Area Length", ProfilePropertyKeys.RainSplashAreaLengthKey, 0, 40.0f, 5.5f,
  503. "The length of the area that rain splashes can happen at, which starts from the Splash Area Offset."),
  504. ProfileGroupDefinition.NumberGroupDefinition("Splash Scale", ProfilePropertyKeys.RainSplashScaleKey, 0.001f, 60.0f, 2.50f,
  505. "The size of randrop splashes."),
  506. ProfileGroupDefinition.NumberGroupDefinition("Splash Scale Varience", ProfilePropertyKeys.RainSplashScaleVarienceKey, 0, 1, .25f,
  507. "The amount of variety in the initial size of rain splashes so they all don't look exactly the same."),
  508. ProfileGroupDefinition.NumberGroupDefinition("Splash Intensity", ProfilePropertyKeys.RainSplashIntensityKey, 0.0f, 1.0f, .75f,
  509. "Lower value makes rain splashes less visible (more transparent), and higher values make splashes more visible."),
  510. ProfileGroupDefinition.NumberGroupDefinition("Splash Surfce Offset", ProfilePropertyKeys.RainSplashSurfaceOffsetKey, 0.0f, 1.0f, .15f,
  511. "Offset from the collision surface normal to keep rain splashes above the object they hit."),
  512. ProfileGroupDefinition.ColorGroupDefinition("Splash Tint Color", ProfilePropertyKeys.RainSplashTintColorKey, Color.white,
  513. "Tint color that will be multilied against rain splash texture."),
  514. }),
  515. // Lightning section.
  516. new ProfileGroupSection("Lightning", ProfileSectionKeys.LightningSectionKey, "LightningSectionIcon", ProfileFeatureKeys.LightningFeature, true, new ProfileGroupDefinition[] {
  517. ProfileGroupDefinition.NumberGroupDefinition("Thunder Sound Volume", ProfilePropertyKeys.ThunderSoundVolumeKey, 0.0f, 1.0f, .35f, ProfileFeatureKeys.ThunderFeature, true,
  518. "Set the volume of the rain effects."),
  519. ProfileGroupDefinition.NumberGroupDefinition("Thunder Sound Delay", ProfilePropertyKeys.ThunderSoundDelayKey, 0.0f, 20.0f, .4f, ProfileFeatureKeys.ThunderFeature, true,
  520. "The amout of time between the lightnig bolt being created and the sound effect playing. Increase to create feeling of distance from lightning."),
  521. ProfileGroupDefinition.NumberGroupDefinition("Lightning Probability", ProfilePropertyKeys.LightningProbabilityKey, 0.0f, 1.0f, .2f,
  522. "The probability determines how many lightning bolts will be spawned in the scene."),
  523. ProfileGroupDefinition.NumberGroupDefinition("Lightning Cool Down", ProfilePropertyKeys.LightningStrikeCoolDown, 0.0f, 30.0f, 2.0f,
  524. "The amount of time that's required to pass after a lighting bolt strike, before another lighting bolt is allowed to be spawned."),
  525. ProfileGroupDefinition.NumberGroupDefinition("Lightning Intensity", ProfilePropertyKeys.LightningIntensityKey, 0.0f, 1.0f, 1.0f,
  526. "Alpha intensity for the lightnight bolt aniamtion, less intense will create a more transparent and light look."),
  527. ProfileGroupDefinition.ColorGroupDefinition("Lightning Tint Color", ProfilePropertyKeys.LightningTintColorKey, Color.white,
  528. "Tint color that will be multilied against the lightning texture color."),
  529. })
  530. };
  531. }
  532. }
  533. }