1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-23 04:27:45 +00:00

Don't hardcode scene keys anymore

This allows us to properly support a wider variety of shader packages
and also don't have to worry about Dawntrail specifically for now.
This commit is contained in:
Joshua Goins 2024-11-02 22:00:47 -04:00
parent 8632786920
commit 0d593ba3a6
2 changed files with 15 additions and 22 deletions

2
extern/libphysis vendored

@ -1 +1 @@
Subproject commit 743ab6bfb1e164c7acc19666321ce1b883ed1da9
Subproject commit 394e83d36b5428ae3f70b0aed98c80aa97f8796c

View file

@ -327,32 +327,25 @@ void GameRenderer::render(VkCommandBuffer commandBuffer, Camera &camera, Scene &
if (renderMaterial.type == MaterialType::Skin && !m_dawntrailMode) {
systemKeys.push_back(physis_shpk_crc("DecodeDepthBuffer_RAWZ"));
}
std::vector<uint32_t> sceneKeys;
if (m_dawntrailMode) {
sceneKeys.push_back(physis_shpk_crc("ApplyDitherClipOff"));
sceneKeys.push_back(physis_shpk_crc("ApplyDissolveColorOff"));
sceneKeys.push_back(physis_shpk_crc("GetCustumizeColorAuraOff"));
for (int j = 0; j < renderMaterial.shaderPackage.num_scene_keys; j++) {
auto id = renderMaterial.shaderPackage.scene_keys[j].id;
bool found = false;
if (id == physis_shpk_crc("TransformView")) {
if (model.skinned) {
sceneKeys.push_back(physis_shpk_crc("TransformViewSkin"));
} else {
sceneKeys.push_back(physis_shpk_crc("TransformViewRigid"));
}
sceneKeys.push_back(physis_shpk_crc("ApplyVertexMovementOff"));
sceneKeys.push_back(physis_shpk_crc("CalculateInstancingPosition_Off"));
} else {
if (model.skinned) {
sceneKeys.push_back(physis_shpk_crc("TransformViewSkin"));
} else {
sceneKeys.push_back(physis_shpk_crc("TransformViewRigid"));
found = true;
}
sceneKeys.push_back(physis_shpk_crc("GetAmbientLight_SH"));
sceneKeys.push_back(physis_shpk_crc("GetReflectColor_Texture"));
sceneKeys.push_back(physis_shpk_crc("GetAmbientOcclusion_None"));
sceneKeys.push_back(physis_shpk_crc("ApplyDitherClipOff"));
// Fall back to default if needed
if (!found) {
sceneKeys.push_back(renderMaterial.shaderPackage.scene_keys[j].default_value);
}
}
std::vector<uint32_t> materialKeys;