Skip to content
This repository was archived by the owner on May 5, 2025. It is now read-only.

Commit 9b8141a

Browse files
committed
RemixApi: add AddTextureHash and RemoveTextureHash methods
also fixes #727 (NVIDIAGameWorks/rtx-remix#727) - increased REMIXAPI_VERSION_MINOR from 5 to 6
1 parent f0c6e48 commit 9b8141a

File tree

5 files changed

+138
-40
lines changed

5 files changed

+138
-40
lines changed

ext/remix/remix.h

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved.
2+
* Copyright (c) 2023-2025, NVIDIA CORPORATION. All rights reserved.
33
*
44
* Permission is hereby granted, free of charge, to any person obtaining a
55
* copy of this software and associated documentation files (the "Software"),
@@ -173,6 +173,8 @@ namespace remix {
173173
Result< void > DestroyLight(remixapi_LightHandle handle);
174174
Result< void > DrawLightInstance(remixapi_LightHandle handle);
175175
Result< void > SetConfigVariable(const char* key, const char* value);
176+
Result< void > AddTextureHash(const char* textureCategory, const char* textureHash);
177+
Result< void > RemoveTextureHash(const char* textureCategory, const char* textureHash);
176178

177179
// DXVK interoperability
178180
Result< IDirect3D9Ex* > dxvk_CreateD3D9(bool editorModeEnabled = false);
@@ -208,7 +210,7 @@ namespace remix {
208210
return status;
209211
}
210212

211-
static_assert(sizeof(remixapi_Interface) == 168,
213+
static_assert(sizeof(remixapi_Interface) == 184,
212214
"Change version, update C++ wrapper when adding new functions");
213215

214216
remix::Interface interfaceInCpp = {};
@@ -251,6 +253,20 @@ namespace remix {
251253
return m_CInterface.SetConfigVariable(key, value);
252254
}
253255

256+
inline Result< void > Interface::AddTextureHash(const char* textureCategory, const char* textureHash) {
257+
if (!m_CInterface.AddTextureHash) {
258+
return REMIXAPI_ERROR_CODE_NOT_INITIALIZED;
259+
}
260+
return m_CInterface.AddTextureHash(textureCategory, textureHash);
261+
}
262+
263+
inline Result< void > Interface::RemoveTextureHash(const char* textureCategory, const char* textureHash) {
264+
if (!m_CInterface.RemoveTextureHash) {
265+
return REMIXAPI_ERROR_CODE_NOT_INITIALIZED;
266+
}
267+
return m_CInterface.RemoveTextureHash(textureCategory, textureHash);
268+
}
269+
254270
inline Result< void > Interface::Present(const remixapi_PresentInfo* info) {
255271
if (!m_CInterface.Present) {
256272
return REMIXAPI_ERROR_CODE_NOT_INITIALIZED;
@@ -365,23 +381,30 @@ namespace remix {
365381
subsurfaceSingleScatteringAlbedoTexture = {};
366382
subsurfaceTransmittanceColor = { 0.5f, 0.5f, 0.5f };
367383
subsurfaceMeasurementDistance = 0.0f;
368-
subsurfaceSingleScatteringAlbedo = { 0.5f, 0.5f, 0.5f };;
384+
subsurfaceSingleScatteringAlbedo = { 0.5f, 0.5f, 0.5f };
369385
subsurfaceVolumetricAnisotropy = 0.0f;
370-
static_assert(sizeof remixapi_MaterialInfoOpaqueSubsurfaceEXT == 72);
386+
subsurfaceDiffusionProfile = false;
387+
subsurfaceRadius = { 0.5f, 0.5f, 0.5f };
388+
subsurfaceRadiusScale = 0.0f;
389+
subsurfaceMaxSampleRadius = 0.0f;
390+
subsurfaceRadiusTexture = {};
391+
static_assert(sizeof remixapi_MaterialInfoOpaqueSubsurfaceEXT == 104);
371392
}
372393

373394
MaterialInfoOpaqueSubsurfaceEXT(const MaterialInfoOpaqueSubsurfaceEXT& other)
374395
: remixapi_MaterialInfoOpaqueSubsurfaceEXT(other)
375396
, cpp_subsurfaceTransmittanceTexture(other.cpp_subsurfaceTransmittanceTexture)
376397
, cpp_subsurfaceThicknessTexture(other.cpp_subsurfaceThicknessTexture)
377-
, cpp_subsurfaceSingleScatteringAlbedoTexture(other.cpp_subsurfaceSingleScatteringAlbedoTexture) {
398+
, cpp_subsurfaceSingleScatteringAlbedoTexture(other.cpp_subsurfaceSingleScatteringAlbedoTexture)
399+
, cpp_subsurfaceRadiusTexture(other.cpp_subsurfaceRadiusTexture) {
378400
cpp_fixPointers();
379401
}
380402
MaterialInfoOpaqueSubsurfaceEXT(MaterialInfoOpaqueSubsurfaceEXT&& other) noexcept
381403
: remixapi_MaterialInfoOpaqueSubsurfaceEXT(other)
382404
, cpp_subsurfaceTransmittanceTexture(std::move(other.cpp_subsurfaceTransmittanceTexture))
383405
, cpp_subsurfaceThicknessTexture(std::move(other.cpp_subsurfaceThicknessTexture))
384-
, cpp_subsurfaceSingleScatteringAlbedoTexture(std::move(other.cpp_subsurfaceSingleScatteringAlbedoTexture)) {
406+
, cpp_subsurfaceSingleScatteringAlbedoTexture(std::move(other.cpp_subsurfaceSingleScatteringAlbedoTexture))
407+
, cpp_subsurfaceRadiusTexture(std::move(other.cpp_subsurfaceRadiusTexture)) {
385408
cpp_fixPointers();
386409
}
387410
MaterialInfoOpaqueSubsurfaceEXT& operator=(const MaterialInfoOpaqueSubsurfaceEXT& other) {
@@ -392,6 +415,7 @@ namespace remix {
392415
cpp_subsurfaceTransmittanceTexture = other.cpp_subsurfaceTransmittanceTexture;
393416
cpp_subsurfaceThicknessTexture = other.cpp_subsurfaceThicknessTexture;
394417
cpp_subsurfaceSingleScatteringAlbedoTexture = other.cpp_subsurfaceSingleScatteringAlbedoTexture;
418+
cpp_subsurfaceRadiusTexture = other.cpp_subsurfaceRadiusTexture;
395419
cpp_fixPointers();
396420
return *this;
397421
}
@@ -403,6 +427,7 @@ namespace remix {
403427
cpp_subsurfaceTransmittanceTexture = std::move(other.cpp_subsurfaceTransmittanceTexture);
404428
cpp_subsurfaceThicknessTexture = std::move(other.cpp_subsurfaceThicknessTexture);
405429
cpp_subsurfaceSingleScatteringAlbedoTexture = std::move(other.cpp_subsurfaceSingleScatteringAlbedoTexture);
430+
cpp_subsurfaceRadiusTexture = std::move(other.cpp_subsurfaceRadiusTexture);
406431
cpp_fixPointers();
407432
return *this;
408433
}
@@ -419,18 +444,24 @@ namespace remix {
419444
cpp_subsurfaceSingleScatteringAlbedoTexture = std::move(v);
420445
subsurfaceSingleScatteringAlbedoTexture = cpp_subsurfaceSingleScatteringAlbedoTexture.c_str();
421446
}
447+
void set_subsurfaceRadiusTexture(std::filesystem::path v) {
448+
cpp_subsurfaceRadiusTexture = std::move(v);
449+
subsurfaceRadiusTexture = cpp_subsurfaceRadiusTexture.c_str();
450+
}
422451

423452
private:
424453
void cpp_fixPointers() {
425454
subsurfaceTransmittanceTexture = cpp_subsurfaceTransmittanceTexture.c_str();
426455
subsurfaceThicknessTexture = cpp_subsurfaceThicknessTexture.c_str();
427456
subsurfaceSingleScatteringAlbedoTexture = cpp_subsurfaceSingleScatteringAlbedoTexture.c_str();
428-
static_assert(sizeof remixapi_MaterialInfoOpaqueSubsurfaceEXT == 72, "Recheck pointers");
457+
subsurfaceRadiusTexture = cpp_subsurfaceRadiusTexture.c_str();
458+
static_assert(sizeof remixapi_MaterialInfoOpaqueSubsurfaceEXT == 104, "Recheck pointers");
429459
}
430460

431461
std::filesystem::path cpp_subsurfaceTransmittanceTexture {};
432462
std::filesystem::path cpp_subsurfaceThicknessTexture {};
433463
std::filesystem::path cpp_subsurfaceSingleScatteringAlbedoTexture {};
464+
std::filesystem::path cpp_subsurfaceRadiusTexture{};
434465
};
435466

436467
struct MaterialInfoTranslucentEXT : remixapi_MaterialInfoTranslucentEXT {
@@ -759,6 +790,7 @@ namespace remix {
759790
radius = 0.05f;
760791
shaping_hasvalue = false;
761792
shaping_value = detail::defaultLightShaping();
793+
volumetricRadianceScale = 1.0f;
762794
static_assert(sizeof remixapi_LightInfoSphereEXT == 64);
763795
}
764796

@@ -779,6 +811,7 @@ namespace remix {
779811
direction = { 0.0f, 0.0f, 1.0f };
780812
shaping_hasvalue = false;
781813
shaping_value = detail::defaultLightShaping();
814+
volumetricRadianceScale = 1.0f;
782815
static_assert(sizeof remixapi_LightInfoRectEXT == 104);
783816
}
784817

@@ -799,6 +832,7 @@ namespace remix {
799832
direction = { 0.0f, 0.0f, 1.0f };
800833
shaping_hasvalue = false;
801834
shaping_value = detail::defaultLightShaping();
835+
volumetricRadianceScale = 1.0f;
802836
static_assert(sizeof remixapi_LightInfoDiskEXT == 104);
803837
}
804838

@@ -815,7 +849,8 @@ namespace remix {
815849
radius = 1.0f;
816850
axis = { 1.0f, 0.0f, 0.0f };
817851
axisLength = 1.0f;
818-
static_assert(sizeof remixapi_LightInfoCylinderEXT == 48);
852+
volumetricRadianceScale = 1.0f;
853+
static_assert(sizeof remixapi_LightInfoCylinderEXT == 56);
819854
}
820855
};
821856

@@ -825,7 +860,8 @@ namespace remix {
825860
pNext = nullptr;
826861
direction = { 0.0f, -1.0f, 0.0f };
827862
angularDiameterDegrees = 0.5f;
828-
static_assert(sizeof remixapi_LightInfoDistantEXT == 32);
863+
volumetricRadianceScale = 1.0f;
864+
static_assert(sizeof remixapi_LightInfoDistantEXT == 40);
829865
}
830866
};
831867

ext/remix/remix_c.h

Lines changed: 52 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved.
2+
* Copyright (c) 2023-2025, NVIDIA CORPORATION. All rights reserved.
33
*
44
* Permission is hereby granted, free of charge, to any person obtaining a
55
* copy of this software and associated documentation files (the "Software"),
@@ -53,8 +53,8 @@
5353
#define REMIXAPI_VERSION_GET_PATCH(version) (((uint64_t)(version) ) & (uint64_t)0xFFFF)
5454

5555
#define REMIXAPI_VERSION_MAJOR 0
56-
#define REMIXAPI_VERSION_MINOR 4
57-
#define REMIXAPI_VERSION_PATCH 2
56+
#define REMIXAPI_VERSION_MINOR 6
57+
#define REMIXAPI_VERSION_PATCH 1
5858

5959

6060
// External
@@ -218,6 +218,11 @@ extern "C" {
218218
float subsurfaceMeasurementDistance;
219219
remixapi_Float3D subsurfaceSingleScatteringAlbedo;
220220
float subsurfaceVolumetricAnisotropy;
221+
remixapi_Bool subsurfaceDiffusionProfile;
222+
remixapi_Float3D subsurfaceRadius;
223+
float subsurfaceRadiusScale;
224+
float subsurfaceMaxSampleRadius;
225+
remixapi_Path subsurfaceRadiusTexture;
221226
} remixapi_MaterialInfoOpaqueSubsurfaceEXT;
222227

223228
typedef struct remixapi_MaterialInfoTranslucentEXT {
@@ -395,20 +400,21 @@ extern "C" {
395400
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_ANTI_CULLING = 1 << 5,
396401
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_MOTION_BLUR = 1 << 6,
397402
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_OPACITY_MICROMAP = 1 << 7,
398-
REMIXAPI_INSTANCE_CATEGORY_BIT_HIDDEN = 1 << 8,
399-
REMIXAPI_INSTANCE_CATEGORY_BIT_PARTICLE = 1 << 9,
400-
REMIXAPI_INSTANCE_CATEGORY_BIT_BEAM = 1 << 10,
401-
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_STATIC = 1 << 11,
402-
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_DYNAMIC = 1 << 12,
403-
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_SINGLE_OFFSET = 1 << 13,
404-
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_NO_OFFSET = 1 << 14,
405-
REMIXAPI_INSTANCE_CATEGORY_BIT_ALPHA_BLEND_TO_CUTOUT = 1 << 15,
406-
REMIXAPI_INSTANCE_CATEGORY_BIT_TERRAIN = 1 << 16,
407-
REMIXAPI_INSTANCE_CATEGORY_BIT_ANIMATED_WATER = 1 << 17,
408-
REMIXAPI_INSTANCE_CATEGORY_BIT_THIRD_PERSON_PLAYER_MODEL = 1 << 18,
409-
REMIXAPI_INSTANCE_CATEGORY_BIT_THIRD_PERSON_PLAYER_BODY = 1 << 19,
410-
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_BAKED_LIGHTING = 1 << 20,
411-
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_ALPHA_CHANNEL = 1 << 21,
403+
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_ALPHA_CHANNEL = 1 << 8,
404+
REMIXAPI_INSTANCE_CATEGORY_BIT_HIDDEN = 1 << 9,
405+
REMIXAPI_INSTANCE_CATEGORY_BIT_PARTICLE = 1 << 10,
406+
REMIXAPI_INSTANCE_CATEGORY_BIT_BEAM = 1 << 11,
407+
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_STATIC = 1 << 12,
408+
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_DYNAMIC = 1 << 13,
409+
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_SINGLE_OFFSET = 1 << 14,
410+
REMIXAPI_INSTANCE_CATEGORY_BIT_DECAL_NO_OFFSET = 1 << 15,
411+
REMIXAPI_INSTANCE_CATEGORY_BIT_ALPHA_BLEND_TO_CUTOUT = 1 << 16,
412+
REMIXAPI_INSTANCE_CATEGORY_BIT_TERRAIN = 1 << 17,
413+
REMIXAPI_INSTANCE_CATEGORY_BIT_ANIMATED_WATER = 1 << 18,
414+
REMIXAPI_INSTANCE_CATEGORY_BIT_THIRD_PERSON_PLAYER_MODEL = 1 << 19,
415+
REMIXAPI_INSTANCE_CATEGORY_BIT_THIRD_PERSON_PLAYER_BODY = 1 << 20,
416+
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_BAKED_LIGHTING = 1 << 21,
417+
REMIXAPI_INSTANCE_CATEGORY_BIT_IGNORE_TRANSPARENCY_LAYER = 1 << 22,
412418
} remixapi_InstanceCategoryBit;
413419

414420
typedef uint32_t remixapi_InstanceCategoryFlags;
@@ -442,6 +448,7 @@ extern "C" {
442448
float radius;
443449
remixapi_Bool shaping_hasvalue;
444450
remixapi_LightInfoLightShaping shaping_value;
451+
float volumetricRadianceScale;
445452
} remixapi_LightInfoSphereEXT;
446453

447454
typedef struct remixapi_LightInfoRectEXT {
@@ -459,6 +466,7 @@ extern "C" {
459466
remixapi_Float3D direction;
460467
remixapi_Bool shaping_hasvalue;
461468
remixapi_LightInfoLightShaping shaping_value;
469+
float volumetricRadianceScale;
462470
} remixapi_LightInfoRectEXT;
463471

464472
typedef struct remixapi_LightInfoDiskEXT {
@@ -476,6 +484,7 @@ extern "C" {
476484
remixapi_Float3D direction;
477485
remixapi_Bool shaping_hasvalue;
478486
remixapi_LightInfoLightShaping shaping_value;
487+
float volumetricRadianceScale;
479488
} remixapi_LightInfoDiskEXT;
480489

481490
typedef struct remixapi_LightInfoCylinderEXT {
@@ -486,6 +495,7 @@ extern "C" {
486495
// The "center" axis of the Cylinder Light. Must be normalized.
487496
remixapi_Float3D axis;
488497
float axisLength;
498+
float volumetricRadianceScale;
489499
} remixapi_LightInfoCylinderEXT;
490500

491501
typedef struct remixapi_LightInfoDistantEXT {
@@ -494,6 +504,7 @@ extern "C" {
494504
// The direction the Distant Light is pointing in. Must be normalized.
495505
remixapi_Float3D direction;
496506
float angularDiameterDegrees;
507+
float volumetricRadianceScale;
497508
} remixapi_LightInfoDistantEXT;
498509

499510
typedef struct remixapi_LightInfoDomeEXT {
@@ -512,19 +523,20 @@ extern "C" {
512523
void* pNext;
513524
remixapi_StructType lightType;
514525
remixapi_Transform transform;
515-
const float* pRadius; // "radius"
516-
const float* pWidth; // "width"
517-
const float* pHeight; // "height"
518-
const float* pLength; // "length"
519-
const float* pAngleRadians; // "angle"
520-
const remixapi_Bool* pEnableColorTemp; // "enableColorTemperature"
521-
const remixapi_Float3D* pColor; // "color"
522-
const float* pColorTemp; // "colorTemperature"
523-
const float* pExposure; // "exposure"
524-
const float* pIntensity; // "intensity"
525-
const float* pConeAngleRadians; // "shaping:cone:angle"
526-
const float* pConeSoftness; // "shaping:cone:softness"
527-
const float* pFocus; // "shaping:focus"
526+
const float* pRadius; // "radius"
527+
const float* pWidth; // "width"
528+
const float* pHeight; // "height"
529+
const float* pLength; // "length"
530+
const float* pAngleRadians; // "angle"
531+
const remixapi_Bool* pEnableColorTemp; // "enableColorTemperature"
532+
const remixapi_Float3D* pColor; // "color"
533+
const float* pColorTemp; // "colorTemperature"
534+
const float* pExposure; // "exposure"
535+
const float* pIntensity; // "intensity"
536+
const float* pConeAngleRadians; // "shaping:cone:angle"
537+
const float* pConeSoftness; // "shaping:cone:softness"
538+
const float* pFocus; // "shaping:focus"
539+
const float* pVolumetricRadianceScale; // "volumetric_radiance_scale"
528540
} remixapi_LightInfoUSDEXT;
529541

530542
typedef struct remixapi_LightInfo {
@@ -550,6 +562,14 @@ extern "C" {
550562
const char* key,
551563
const char* value);
552564

565+
typedef remixapi_ErrorCode(REMIXAPI_PTR* PFN_remixapi_AddTextureHash)(
566+
const char* textureCategory,
567+
const char* textureHash);
568+
569+
typedef remixapi_ErrorCode(REMIXAPI_PTR* PFN_remixapi_RemoveTextureHash)(
570+
const char* textureCategory,
571+
const char* textureHash);
572+
553573
typedef struct remixapi_PresentInfo {
554574
remixapi_StructType sType;
555575
void* pNext;
@@ -630,6 +650,8 @@ extern "C" {
630650
PFN_remixapi_DestroyLight DestroyLight;
631651
PFN_remixapi_DrawLightInstance DrawLightInstance;
632652
PFN_remixapi_SetConfigVariable SetConfigVariable;
653+
PFN_remixapi_AddTextureHash AddTextureHash;
654+
PFN_remixapi_RemoveTextureHash RemoveTextureHash;
633655

634656
// DXVK interoperability
635657
PFN_remixapi_dxvk_CreateD3D9 dxvk_CreateD3D9;

src/client/remix_api.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,32 @@ remixapi_ErrorCode REMIXAPI_CALL remixapi_SetConfigVariable(const char* var, con
380380
return REMIXAPI_ERROR_CODE_SUCCESS;
381381
}
382382

383+
remixapi_ErrorCode REMIXAPI_CALL remixapi_AddTextureHash(const char* var, const char* value) {
384+
ASSERT_REMIXAPI_PFN_TYPE(remixapi_AddTextureHash);
385+
if (!var || !value) {
386+
return REMIXAPI_ERROR_CODE_INVALID_ARGUMENTS;
387+
}
388+
{
389+
ClientMessage c(Commands::RemixApi_AddTextureHash);
390+
send(c, var);
391+
send(c, value);
392+
}
393+
return REMIXAPI_ERROR_CODE_SUCCESS;
394+
}
395+
396+
remixapi_ErrorCode REMIXAPI_CALL remixapi_RemoveTextureHash(const char* var, const char* value) {
397+
ASSERT_REMIXAPI_PFN_TYPE(remixapi_RemoveTextureHash);
398+
if (!var || !value) {
399+
return REMIXAPI_ERROR_CODE_INVALID_ARGUMENTS;
400+
}
401+
{
402+
ClientMessage c(Commands::RemixApi_RemoveTextureHash);
403+
send(c, var);
404+
send(c, value);
405+
}
406+
return REMIXAPI_ERROR_CODE_SUCCESS;
407+
}
408+
383409
remixapi_ErrorCode REMIXAPI_CALL remixapi_dxvk_CreateD3D9(
384410
remixapi_Bool editorModeEnabled,
385411
IDirect3D9Ex** out_pD3D9) {
@@ -441,6 +467,9 @@ extern "C" {
441467
interf.DestroyLight = remixapi_DestroyLight;
442468
interf.DrawLightInstance = remixapi_DrawLightInstance;
443469
interf.SetConfigVariable = remixapi_SetConfigVariable;
470+
interf.AddTextureHash = remixapi_AddTextureHash;
471+
interf.RemoveTextureHash = remixapi_RemoveTextureHash;
472+
444473
interf.dxvk_CreateD3D9 = remixapi_dxvk_CreateD3D9;
445474
interf.dxvk_RegisterD3D9Device = remixapi_dxvk_RegisterD3D9Device;
446475
// interf.dxvk_GetExternalSwapchain = remixapi_dxvk_GetExternalSwapchain;

src/server/main.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3127,6 +3127,8 @@ void ProcessDeviceCommandQueue() {
31273127
}
31283128

31293129
case RemixApi_SetConfigVariable:
3130+
case RemixApi_AddTextureHash:
3131+
case RemixApi_RemoveTextureHash:
31303132
{
31313133
void* var_ptr = nullptr;
31323134
const uint32_t var_size = DeviceBridge::getReaderChannel().data->pull(&var_ptr);
@@ -3136,7 +3138,14 @@ void ProcessDeviceCommandQueue() {
31363138
const uint32_t value_size = DeviceBridge::getReaderChannel().data->pull(&value_ptr);
31373139
std::string value_str((const char*) value_ptr, value_size);
31383140

3139-
remixapi::g_remix.SetConfigVariable(var_str.c_str(), value_str.c_str());
3141+
switch (rpcHeader.command)
3142+
{
3143+
default:
3144+
case RemixApi_SetConfigVariable: remixapi::g_remix.SetConfigVariable(var_str.c_str(), value_str.c_str()); break;
3145+
case RemixApi_AddTextureHash: remixapi::g_remix.AddTextureHash(var_str.c_str(), value_str.c_str()); break;
3146+
case RemixApi_RemoveTextureHash: remixapi::g_remix.RemoveTextureHash(var_str.c_str(), value_str.c_str()); break;
3147+
}
3148+
31403149
break;
31413150
}
31423151

0 commit comments

Comments
 (0)