@@ -177,6 +177,10 @@ void Graphics::on_draw_ui() {
177177 }
178178
179179 if (interception_node_open) {
180+ if (ImGui::InputText (std::format (" Replace Shader" , i).c_str (), intercepted.replace_with_name .data (), intercepted.replace_with_name .size ())) {
181+ intercepted.replace_with_hash = sdk::murmur_hash::calc32_as_utf8 (intercepted.replace_with_name .data ());
182+ }
183+
180184 for (auto & replacement : intercepted.replacement_shaders ) {
181185 i++;
182186 ImGui::PushID (std::format (" Shader {}" , i).c_str ());
@@ -1110,7 +1114,7 @@ sdk::renderer::PipelineState* Graphics::find_pipeline_state_hook(void* shader_re
11101114 auto & graphics = Graphics::get ();
11111115
11121116 const auto og = graphics->m_find_pipeline_state_hook ->get_original <decltype (find_pipeline_state_hook)>();
1113- const auto result = og (shader_resource, murmur_hash, unk);
1117+ auto result = og (shader_resource, murmur_hash, unk);
11141118
11151119 if (!graphics->m_shader_playground ->value ()) {
11161120 return result;
@@ -1135,6 +1139,15 @@ sdk::renderer::PipelineState* Graphics::find_pipeline_state_hook(void* shader_re
11351139 if (intercepted_shader == nullptr ) {
11361140 return result;
11371141 }
1142+
1143+ if (intercepted_shader->replace_with_hash != 0 || std::string_view{intercepted_shader->replace_with_name } == " None" ) {
1144+ const auto replacement = og (shader_resource, intercepted_shader->replace_with_hash , unk);
1145+
1146+ if (replacement != nullptr ) {
1147+ result = replacement;
1148+ }
1149+ }
1150+
11381151 uint32_t i = 1 ;
11391152
11401153 for (auto & replacement_shader : intercepted_shader->replacement_shaders ) {
0 commit comments