public override void OnAdd(Scene scene) { renderElement = new SkyRenderElement(); renderElement.mieHeight = 0.0022f; renderElement.rayleighHeight = 0.0035f; renderElement.rayleighGain = 9.235767f; renderElement.mieGain = 16.199024f; SetColor(new Vector3(0.8353f, 0.6119f, 0.4780f)); NoiseParameters cloudParams = new NoiseParameters(16, 0.49f, 0.018499f, 0.70999f); renderElement.cloudTexture = GFX.Inst.PerlinNoiseGen.Generate2DNoise(cloudParams, 512, 512, 1); //MieHeight = 15; //RayleighHeight = 55; //SetColor(new Vector3(0.65f, 0.57f, 0.475f)); base.OnAdd(scene); }
public override void OnAdd(Scene scene) { renderElement = new SkyRenderElement(); renderElement.mieHeight = 0.0022f; renderElement.rayleighHeight = 0.0035f; renderElement.rayleighGain = 9.235767f; renderElement.mieGain = 16.199024f; SetColor(new Vector3(0.8353f, 0.6119f, 0.4780f)); NoiseParameters cloudParams = new NoiseParameters(16, 0.49f, 0.018499f, 0.70999f); renderElement.cloudTexture = (Texture2D)ResourceManager.Inst.GetTexture("Textures/Sky/cloud1.png").GetTexture();// GFX.Inst.PerlinNoiseGen.Generate2DNoise(cloudParams, 512, 512, 1); GFX.Inst.PerlinNoiseGen.Generate2DNoise(cloudParams, 512, 512, 1).Save("NoiseTexture.dds", ImageFileFormat.Dds); //MieHeight = 15; //RayleighHeight = 55; //SetColor(new Vector3(0.65f, 0.57f, 0.475f)); base.OnAdd(scene); }
public Texture2D Generate2DNoise(NoiseParameters noiseParams, int width, int height, int mipCount) { Vector2 invRes = Vector2.One / new Vector2(width, height); noise2DShader.SetupShader(); GFX.Device.SetVertexShaderConstant(0, invRes); GFX.Device.SetPixelShaderConstant(0, invRes); GFX.Device.SetPixelShaderConstant(1, new Vector4(noiseParams.Amplitude, noiseParams.Frequency, noiseParams.Persistance, noiseParams.Octaves)); GFX.Device.Textures[0] = ComputeRandomTexture(width / 2, height / 2); RenderTarget2D rtNoise = new RenderTarget2D(GFX.Device, width, height, 1, SurfaceFormat.Color); DepthStencilBuffer dsOld = GFX.Device.DepthStencilBuffer; GFX.Device.DepthStencilBuffer = GFX.Inst.dsBufferLarge; GFX.Device.SetRenderTarget(0, rtNoise); GFXPrimitives.Quad.Render(); GFX.Device.SetRenderTarget(0, null); GFX.Device.DepthStencilBuffer = dsOld; Color[] colorData = new Color[width * height]; rtNoise.GetTexture().GetData<Color>(colorData); Texture2D noiseTexture = new Texture2D(GFX.Device, width, height, mipCount, TextureUsage.None, SurfaceFormat.Color); noiseTexture.SetData<Color>(colorData); noiseTexture.GenerateMipMaps(TextureFilter.GaussianQuad); return noiseTexture; }