diff options
| author | Gangzheng Tong <tonggangzheng@gmail.com> | 2025-07-08 23:44:56 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-09 06:44:56 +0000 |
| commit | 43d0c2100ef1a5df4b54525e50eb29fe7c39ec16 (patch) | |
| tree | 25ec4fb9c726115f90bdaa9878f2f4ca372ad0a6 /tools/platform/model.cpp | |
| parent | 00746bf09047cdf01c19dac513a532bcf3ed3ea3 (diff) | |
Convert gfx unit tests and examples to use slang-rhi (#7577)
* Port first gfx unit test to slang-rhi
* port triangle example to use slang-rhi
* port platform-test to slang-rhi
* Update platform-test to throttle mouse move events
* port gpu-printing example to use slang-rhi
* port model-viewer example to use slang-rhi
* port ray-tracing example to use slang-rhi
* port ray-tracing pipeline example to use slang-rhi
* port reflection parameter blocks example to use slang-rhi
* port shader-object example to use slang-rhi
* port shader-toy example to use slang-rhi
* Port most of tests to slang-rhi
* port link-time-constant-array-size to use slang-rhi
* Fix tests and find matching tests in slang-rhi
* port autodiff-texture
* remove gfx target; port nv-aftermath-example
* update include path for shader-cursor.h
* Disabled 2 more ported tests
* fix build error
* remove gfx test
* put slang-rhi (static-lib) before slang (shared)
* format code (#7621)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* add debug callback
* format code (#7649)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Address review comments; revert back to use SLANG_CHECK_MSG
---------
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'tools/platform/model.cpp')
| -rw-r--r-- | tools/platform/model.cpp | 56 |
1 files changed, 26 insertions, 30 deletions
diff --git a/tools/platform/model.cpp b/tools/platform/model.cpp index 8453363c3..ed19a5a83 100644 --- a/tools/platform/model.cpp +++ b/tools/platform/model.cpp @@ -22,7 +22,7 @@ namespace platform { -using namespace gfx; +using namespace rhi; using namespace Slang; // TinyObj provides a tuple type that bundles up indices, but doesn't @@ -101,7 +101,7 @@ struct hash<platform::SmoothingGroupVertexID> namespace platform { -ComPtr<ITextureResource> loadTextureImage(IDevice* device, char const* path) +ComPtr<ITexture> loadTextureImage(IDevice* device, char const* path) { int extentX = 0; int extentY = 0; @@ -121,20 +121,20 @@ ComPtr<ITextureResource> loadTextureImage(IDevice* device, char const* path) return nullptr; case 4: - format = Format::R8G8B8A8_UNORM; + format = Format::RGBA8Unorm; // TODO: handle other cases here if/when we stop forcing 4-component // results when loading the image with stb_image. } - std::vector<ITextureResource::SubresourceData> subresourceInitData; + std::vector<SubresourceData> subresourceInitData; ptrdiff_t stride = extentX * channelCount * sizeof(stbi_uc); - ITextureResource::SubresourceData baseInitData; + SubresourceData baseInitData; baseInitData.data = data; - baseInitData.strideY = stride; - baseInitData.strideZ = 0; + baseInitData.rowPitch = stride; + baseInitData.slicePitch = 0; subresourceInitData.push_back(baseInitData); @@ -178,10 +178,10 @@ ComPtr<ITextureResource> loadTextureImage(IDevice* device, char const* path) STBIR_FLAG_ALPHA_PREMULTIPLIED); - ITextureResource::SubresourceData mipInitData; + SubresourceData mipInitData; mipInitData.data = newData; - mipInitData.strideY = newStride; - mipInitData.strideZ = 0; + mipInitData.rowPitch = newStride; + mipInitData.slicePitch = 0; subresourceInitData.push_back(mipInitData); @@ -194,16 +194,15 @@ ComPtr<ITextureResource> loadTextureImage(IDevice* device, char const* path) int mipCount = (int)subresourceInitData.size(); - ITextureResource::Desc desc = {}; - desc.type = IResource::Type::Texture2D; - desc.defaultState = ResourceState::ShaderResource; - desc.allowedStates = ResourceStateSet(ResourceState::ShaderResource); + TextureDesc desc = {}; + desc.type = TextureType::Texture2D; + desc.usage = TextureUsage::ShaderResource; desc.format = format; desc.size.width = extentX; desc.size.height = extentY; desc.size.depth = 1; - desc.numMipLevels = mipCount; - auto texture = device->createTextureResource(desc, subresourceInitData.data()); + desc.mipCount = mipCount; + auto texture = device->createTexture(desc, subresourceInitData.data()); free(data); return texture; @@ -541,29 +540,26 @@ SlangResult ModelLoader::load(char const* inputPath, void** outModel) modelData.vertexCount = (int)flatVertices.size(); modelData.indexCount = (int)flatIndices.size(); + modelData.primitiveTopology = PrimitiveTopology::TriangleList; modelData.meshCount = int(meshes.size()); modelData.meshes = meshes.data(); - IBufferResource::Desc vertexBufferDesc; - vertexBufferDesc.type = IResource::Type::Buffer; - vertexBufferDesc.sizeInBytes = modelData.vertexCount * sizeof(Vertex); - vertexBufferDesc.allowedStates = - ResourceStateSet(ResourceState::VertexBuffer, ResourceState::CopyDestination); - vertexBufferDesc.defaultState = ResourceState::VertexBuffer; + BufferDesc vertexBufferDesc; + vertexBufferDesc.size = modelData.vertexCount * sizeof(Vertex); + vertexBufferDesc.usage = BufferUsage::VertexBuffer; + vertexBufferDesc.elementSize = sizeof(Vertex); - modelData.vertexBuffer = device->createBufferResource(vertexBufferDesc, flatVertices.data()); + modelData.vertexBuffer = device->createBuffer(vertexBufferDesc, flatVertices.data()); if (!modelData.vertexBuffer) return SLANG_FAIL; - IBufferResource::Desc indexBufferDesc; - indexBufferDesc.type = IResource::Type::Buffer; - indexBufferDesc.sizeInBytes = modelData.indexCount * sizeof(Index); - indexBufferDesc.allowedStates = - ResourceStateSet(ResourceState::IndexBuffer, ResourceState::CopyDestination); - indexBufferDesc.defaultState = ResourceState::IndexBuffer; + BufferDesc indexBufferDesc; + indexBufferDesc.size = modelData.indexCount * sizeof(Index); + indexBufferDesc.usage = BufferUsage::IndexBuffer; + indexBufferDesc.elementSize = sizeof(Index); - modelData.indexBuffer = device->createBufferResource(indexBufferDesc, flatIndices.data()); + modelData.indexBuffer = device->createBuffer(indexBufferDesc, flatIndices.data()); if (!modelData.indexBuffer) return SLANG_FAIL; |
