Skip to content

Commit bfde18a

Browse files
GLTF_PBR_Renderer: use texture atlas format array in ResourceCacheUseInfo
1 parent d9a75a7 commit bfde18a

File tree

2 files changed

+28
-62
lines changed

2 files changed

+28
-62
lines changed

PBR/interface/GLTF_PBR_Renderer.hpp

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2019-2024 Diligent Graphics LLC
2+
* Copyright 2019-2025 Diligent Graphics LLC
33
* Copyright 2015-2019 Egor Yusov
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -169,53 +169,18 @@ class GLTF_PBR_Renderer : public PBR_Renderer
169169
/// Vertex layout key.
170170
GLTF::ResourceManager::VertexLayoutKey VtxLayoutKey;
171171

172-
/// Base color texture format.
173-
TEXTURE_FORMAT BaseColorFormat = TEX_FORMAT_RGBA8_UNORM;
172+
/// Texture atlas format for each texture attribute.
173+
std::array<TEXTURE_FORMAT, TEXTURE_ATTRIB_ID_COUNT> AtlasFormats{};
174174

175-
/// Base color texture format for alpha-cut and alpha-blend materials.
176-
TEXTURE_FORMAT BaseColorAlphaFormat = TEX_FORMAT_RGBA8_UNORM;
177-
178-
/// Physical descriptor texture format.
179-
TEXTURE_FORMAT PhysicalDescFormat = TEX_FORMAT_RGBA8_UNORM;
180-
181-
/// Normal map format.
182-
TEXTURE_FORMAT NormalFormat = TEX_FORMAT_RGBA8_UNORM;
183-
184-
/// Occlusion texture format.
185-
TEXTURE_FORMAT OcclusionFormat = TEX_FORMAT_RGBA8_UNORM;
186-
187-
/// Emissive texture format.
188-
TEXTURE_FORMAT EmissiveFormat = TEX_FORMAT_RGBA8_UNORM;
189-
190-
/// Clear coat texture format.
191-
TEXTURE_FORMAT ClearCoatFormat = TEX_FORMAT_RGBA8_UNORM;
192-
193-
/// Clear coat roughness texture format.
194-
TEXTURE_FORMAT ClearCoatRoughnessFormat = TEX_FORMAT_RGBA8_UNORM;
195-
196-
/// Clear coat normal texture format.
197-
TEXTURE_FORMAT ClearCoatNormalFormat = TEX_FORMAT_RGBA8_UNORM;
198-
199-
/// Sheen color texture format.
200-
TEXTURE_FORMAT SheenColorFormat = TEX_FORMAT_RGBA8_UNORM;
201-
202-
/// Sheen roughness texture format.
203-
TEXTURE_FORMAT SheenRoughnessFormat = TEX_FORMAT_RGBA8_UNORM;
204-
205-
/// Anisotropy texture format.
206-
TEXTURE_FORMAT AnisotropyFormat = TEX_FORMAT_RGBA8_UNORM;
207-
208-
/// Iridescence texture format.
209-
TEXTURE_FORMAT IridescenceFormat = TEX_FORMAT_RGBA8_UNORM;
210-
211-
/// Iridescence thickness texture format.
212-
TEXTURE_FORMAT IridescenceThicknessFormat = TEX_FORMAT_RGBA8_UNORM;
213-
214-
/// Transmission texture format.
215-
TEXTURE_FORMAT TransmissionFormat = TEX_FORMAT_RGBA8_UNORM;
175+
ResourceCacheUseInfo() noexcept
176+
{
177+
AtlasFormats.fill(TEX_FORMAT_RGBA8_UNORM);
178+
}
216179

217-
/// Thickness texture format.
218-
TEXTURE_FORMAT ThicknessFormat = TEX_FORMAT_RGBA8_UNORM;
180+
void SetAtlasFormats(TEXTURE_FORMAT Format)
181+
{
182+
AtlasFormats.fill(Format);
183+
}
219184
};
220185

221186
/// Creates a shader resource binding for a GTLF resource cache.

PBR/src/GLTF_PBR_Renderer.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -244,58 +244,59 @@ void GLTF_PBR_Renderer::CreateResourceCacheSRB(IRenderDevice* pDevice,
244244

245245
InitCommonSRBVars(pSRB, pFrameAttribs);
246246

247-
auto SetTexture = [&](TEXTURE_FORMAT Fmt, TEXTURE_ATTRIB_ID ID) //
247+
auto SetTexture = [&](TEXTURE_ATTRIB_ID ID) //
248248
{
249+
TEXTURE_FORMAT Fmt = CacheUseInfo.AtlasFormats[ID];
249250
if (ITexture* pTexture = CacheUseInfo.pResourceMgr->UpdateTexture(Fmt, pDevice, pCtx))
250251
{
251252
this->SetMaterialTexture(pSRB, pTexture->GetDefaultView(TEXTURE_VIEW_SHADER_RESOURCE), ID);
252253
}
253254
};
254255

255-
SetTexture(CacheUseInfo.BaseColorFormat, TEXTURE_ATTRIB_ID_BASE_COLOR);
256-
SetTexture(CacheUseInfo.PhysicalDescFormat, TEXTURE_ATTRIB_ID_PHYS_DESC);
257-
SetTexture(CacheUseInfo.NormalFormat, TEXTURE_ATTRIB_ID_NORMAL);
256+
SetTexture(TEXTURE_ATTRIB_ID_BASE_COLOR);
257+
SetTexture(TEXTURE_ATTRIB_ID_PHYS_DESC);
258+
SetTexture(TEXTURE_ATTRIB_ID_NORMAL);
258259
if (m_Settings.EnableAO)
259260
{
260-
SetTexture(CacheUseInfo.OcclusionFormat, TEXTURE_ATTRIB_ID_OCCLUSION);
261+
SetTexture(TEXTURE_ATTRIB_ID_OCCLUSION);
261262
}
262263
if (m_Settings.EnableEmissive)
263264
{
264-
SetTexture(CacheUseInfo.EmissiveFormat, TEXTURE_ATTRIB_ID_EMISSIVE);
265+
SetTexture(TEXTURE_ATTRIB_ID_EMISSIVE);
265266
}
266267

267268
if (m_Settings.EnableClearCoat)
268269
{
269-
SetTexture(CacheUseInfo.ClearCoatFormat, TEXTURE_ATTRIB_ID_CLEAR_COAT);
270-
SetTexture(CacheUseInfo.ClearCoatRoughnessFormat, TEXTURE_ATTRIB_ID_CLEAR_COAT_ROUGHNESS);
271-
SetTexture(CacheUseInfo.ClearCoatNormalFormat, TEXTURE_ATTRIB_ID_CLEAR_COAT_NORMAL);
270+
SetTexture(TEXTURE_ATTRIB_ID_CLEAR_COAT);
271+
SetTexture(TEXTURE_ATTRIB_ID_CLEAR_COAT_ROUGHNESS);
272+
SetTexture(TEXTURE_ATTRIB_ID_CLEAR_COAT_NORMAL);
272273
}
273274

274275
if (m_Settings.EnableSheen)
275276
{
276-
SetTexture(CacheUseInfo.SheenColorFormat, TEXTURE_ATTRIB_ID_SHEEN_COLOR);
277-
SetTexture(CacheUseInfo.SheenRoughnessFormat, TEXTURE_ATTRIB_ID_SHEEN_ROUGHNESS);
277+
SetTexture(TEXTURE_ATTRIB_ID_SHEEN_COLOR);
278+
SetTexture(TEXTURE_ATTRIB_ID_SHEEN_ROUGHNESS);
278279
}
279280

280281
if (m_Settings.EnableAnisotropy)
281282
{
282-
SetTexture(CacheUseInfo.AnisotropyFormat, TEXTURE_ATTRIB_ID_ANISOTROPY);
283+
SetTexture(TEXTURE_ATTRIB_ID_ANISOTROPY);
283284
}
284285

285286
if (m_Settings.EnableIridescence)
286287
{
287-
SetTexture(CacheUseInfo.IridescenceFormat, TEXTURE_ATTRIB_ID_IRIDESCENCE);
288-
SetTexture(CacheUseInfo.IridescenceThicknessFormat, TEXTURE_ATTRIB_ID_IRIDESCENCE_THICKNESS);
288+
SetTexture(TEXTURE_ATTRIB_ID_IRIDESCENCE);
289+
SetTexture(TEXTURE_ATTRIB_ID_IRIDESCENCE_THICKNESS);
289290
}
290291

291292
if (m_Settings.EnableTransmission)
292293
{
293-
SetTexture(CacheUseInfo.TransmissionFormat, TEXTURE_ATTRIB_ID_TRANSMISSION);
294+
SetTexture(TEXTURE_ATTRIB_ID_TRANSMISSION);
294295
}
295296

296297
if (m_Settings.EnableVolume)
297298
{
298-
SetTexture(CacheUseInfo.ThicknessFormat, TEXTURE_ATTRIB_ID_THICKNESS);
299+
SetTexture(TEXTURE_ATTRIB_ID_THICKNESS);
299300
}
300301
}
301302

0 commit comments

Comments
 (0)