mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-12-20 07:37:01 +00:00
do vertex buffer restride in a void vertex function
This commit is contained in:
parent
5e9537c777
commit
27925a4fd9
5 changed files with 94 additions and 21 deletions
|
|
@ -30,8 +30,20 @@ inline const char* utilityShaderSource = \
|
|||
" uint dstSlice;\n" \
|
||||
"};\n" \
|
||||
"\n" \
|
||||
"vertex void vertexCopyTextureToTexture(uint vid [[vertex_id]], texture2d_array<float, access::read> src [[texture(0)]], texture2d_array<float, access::write> dst [[texture(1)]], constant CopyParams& params) {\n" \
|
||||
"vertex void vertexCopyTextureToTexture(uint vid [[vertex_id]], texture2d_array<float, access::read> src [[texture(0)]], texture2d_array<float, access::write> dst [[texture(1)]], constant CopyParams& params [[buffer(0)]]) {\n" \
|
||||
" uint2 coord = uint2(vid % params.width, vid / params.width);\n" \
|
||||
" return dst.write(float4(src.read(coord, params.srcSlice, params.srcMip).r, 0.0, 0.0, 0.0), coord, params.dstSlice, params.dstMip);\n" \
|
||||
"}\n" \
|
||||
"\n" \
|
||||
"struct RestrideParams {\n" \
|
||||
" uint oldStride;\n" \
|
||||
" uint newStride;\n" \
|
||||
"};\n" \
|
||||
"\n" \
|
||||
/* TODO: use uint32? Since that would require less iterations */ \
|
||||
"vertex void vertexRestrideBuffer(uint vid [[vertex_id]], device uint8_t* src [[buffer(0)]], device uint8_t* dst [[buffer(1)]], constant RestrideParams& params [[buffer(2)]]) {\n" \
|
||||
" for (uint32_t i = 0; i < params.oldStride; i++) {\n" \
|
||||
" dst[vid * params.newStride + i] = src[vid * params.oldStride + i];\n" \
|
||||
" }\n" \
|
||||
"}\n" \
|
||||
"\n";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue