public CloudComponent(Vector3[] positions) { Instances = new Instance[positions.Length]; for (int i = 0; i < Instances.Length; i++) { Instances[i] = new Instance() { Position = positions[i], Scale = 250.0f, }; } InstanceWVPs.Create(Instances.Length, Accessibility.DynamicWriteOnly); }
static WindComponent() { VertexPositions.Create(new Vector3[] { new Vector3(-0.5f, 0, +0.5f), new Vector3(+0.5f, 0, +0.5f), new Vector3(-0.5f, 0, -0.5f), new Vector3(+0.5f, 0, -0.5f), }, Accessibility.None); VertexTextureCoords.Create(new Vector2[] { new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 1), new Vector2(1, 1), }, Accessibility.None); VertexShader.CreateFromFile("res/shader/WindVertexShader.hlsl"); PixelShader.CreateFromFile("res/shader/WindPixelShader.hlsl"); VertexLayout.Create(new VertexElement[] { new VertexElement("POSITION", 0, Format.Float3, 0, 0, VertexElement.Classification.VertexData, 0), new VertexElement("TEXCOORD", 0, Format.Float2, 1, 0, VertexElement.Classification.VertexData, 0), new VertexElement("ALPHA", 0, Format.Float1, 2, 0, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 0, Format.Float4, 3, sizeof(float) * 0, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 1, Format.Float4, 3, sizeof(float) * 4, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 2, Format.Float4, 3, sizeof(float) * 8, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 3, Format.Float4, 3, sizeof(float) * 12, VertexElement.Classification.InstanceData, 1), }, VertexShader); Texture.Create("res/texture/wind.dds", Accessibility.None); InstanceAlphas.Create(InstanceCount, Accessibility.DynamicWriteOnly); InstanceWVPs.Create(InstanceCount, Accessibility.DynamicWriteOnly); }
static StringySmokeComponent() { VertexPositions.Create(new Vector3[] { new Vector3(0, 1, 1), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0, 0, 0), }, Accessibility.None); VertexTextureCoords.Create(new Vector2[] { new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 1), new Vector2(1, 1), }, Accessibility.None); InstanceColors.Create(InstanceCount, Accessibility.DynamicWriteOnly); InstanceWVPs.Create(InstanceCount, Accessibility.DynamicWriteOnly); VertexShader.CreateFromFile("res/shader/StringySmokeVertexShader.hlsl"); PixelShader.CreateFromFile("res/shader/StringySmokePixelShader.hlsl"); VertexLayout.Create(new VertexElement[] { new VertexElement("POSITION", 0, Format.Float3, 0, 0, VertexElement.Classification.VertexData, 0), new VertexElement("TEXCOORD", 0, Format.Float2, 1, 0, VertexElement.Classification.VertexData, 0), new VertexElement("COLOR", 0, Format.Float4, 2, 0, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 0, Format.Float4, 3, sizeof(float) * 0, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 1, Format.Float4, 3, sizeof(float) * 4, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 2, Format.Float4, 3, sizeof(float) * 8, VertexElement.Classification.InstanceData, 1), new VertexElement("WVP", 3, Format.Float4, 3, sizeof(float) * 12, VertexElement.Classification.InstanceData, 1), }, VertexShader); Texture.Create("res/texture/stringy_smoke.dds", Accessibility.None); }