yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// cpu-resource-views.h 2#pragma once 3#include "cpu-base.h" 4#include "cpu-buffer.h" 5#include "cpu-texture.h" 6 7namespace gfx 8{ 9using namespace Slang ; 10 11namespace cpu 12{ 13 14class ResourceViewImpl :public ResourceViewBase 15{ 16public : 17enum class Kind 18 { 19Buffer , 20Texture , 21 }; 22Kind getViewKind ()const {return m_kind ; } 23Desc const & getDesc ()const {return m_desc ; } 24 25protected : 26ResourceViewImpl (Kind kind ,Desc const & desc ); 27 28private : 29Kind m_kind ; 30}; 31 32class BufferResourceViewImpl :public ResourceViewImpl 33{ 34public : 35BufferResourceViewImpl (Desc const & desc ,BufferResourceImpl * buffer ) 36 :ResourceViewImpl (Kind ::Buffer ,desc ),m_buffer (buffer ) 37 { 38 } 39 40BufferResourceImpl * getBuffer ()const ; 41 42private : 43RefPtr < BufferResourceImpl > m_buffer ; 44}; 45 46class TextureResourceViewImpl :public ResourceViewImpl ,public slang_prelude ::IRWTexture 47{ 48public : 49TextureResourceViewImpl (Desc const & desc ,TextureResourceImpl * texture ) 50 :ResourceViewImpl (Kind ::Texture ,desc ),m_texture (texture ) 51 { 52 } 53 54TextureResourceImpl * getTexture ()const ; 55 56// 57// ITexture interface 58// 59 60slang_prelude ::TextureDimensions GetDimensions (int mipLevel = -1 )SLANG_OVERRIDE ; 61 62void Load (const int32_t * texelCoords ,void * outData ,size_t dataSize )SLANG_OVERRIDE ; 63 64void Sample ( 65slang_prelude ::SamplerState samplerState , 66const float * coords , 67void * outData , 68size_t dataSize )SLANG_OVERRIDE ; 69 70void SampleLevel ( 71slang_prelude ::SamplerState samplerState , 72const float * coords , 73float level , 74void * outData , 75size_t dataSize )SLANG_OVERRIDE ; 76 77// 78// IRWTexture interface 79// 80 81void * refAt (const uint32_t * texelCoords )SLANG_OVERRIDE ; 82 83private : 84RefPtr < TextureResourceImpl > m_texture ; 85 86void * _getTexelPtr (int32_t const * texelCoords ); 87}; 88 89}// namespace cpu 90}// namespace gfx