Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using DEngine.Common;
- using Veldrid;
- namespace DEngine.Generation.Shaders
- {
- public class NoiseShader : ComputeShaderAbstract
- {
- public const uint Width = 256;
- public const uint BlockCount = Width * Width * Width;
- private DeviceBuffer NoiseBuffer;
- private Pipeline _computePipeline;
- private ResourceSet _computeResourceSet;
- private CommandList _cl;
- public NoiseShader(ResourceFactory factory) : base(factory, "ComputeNoise")
- {
- NoiseBuffer = factory.CreateBuffer(
- new BufferDescription(
- (uint)sizeof(float) * BlockCount,
- BufferUsage.StructuredBufferReadWrite,
- (uint)sizeof(float)));
- ResourceLayout blockStorageLayout = factory.CreateResourceLayout(new ResourceLayoutDescription(
- new ResourceLayoutElementDescription("NoiseBuffer", ResourceKind.StructuredBufferReadWrite, ShaderStages.Compute)));
- ComputePipelineDescription computePipelineDesc = new ComputePipelineDescription(
- ComputeShader,
- new[] { blockStorageLayout },
- Width, 1, Width);
- _computePipeline = factory.CreateComputePipeline(ref computePipelineDesc);
- _computeResourceSet = factory.CreateResourceSet(new ResourceSetDescription(blockStorageLayout, NoiseBuffer));
- _cl = factory.CreateCommandList();
- }
- public void TestExecute()
- {
- _cl.Begin();
- _cl.SetPipeline(_computePipeline);
- _cl.SetComputeResourceSet(0, _computeResourceSet);
- _cl.Dispatch(1, 1, Width);
- _cl.End();
- References.Device.SubmitCommands(_cl);
- // TODO: Read NoiseBuffer?
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement