Explorar o código

Add ability to override shader state

Daniele Bartolini %!s(int64=8) %!d(string=hai) anos
pai
achega
13af01cbbe
Modificáronse 2 ficheiros con 3 adicións e 3 borrados
  1. 2 2
      src/world/shader_manager.cpp
  2. 1 1
      src/world/shader_manager.h

+ 2 - 2
src/world/shader_manager.cpp

@@ -109,7 +109,7 @@ void ShaderManager::add_shader(StringId32 name, u64 state, bgfx::ProgramHandle p
 	hash_map::set(_shader_map, name, sd);
 }
 
-void ShaderManager::submit(StringId32 shader_id, u8 view_id)
+void ShaderManager::submit(StringId32 shader_id, u8 view_id, u64 state)
 {
 	CE_ASSERT(hash_map::has(_shader_map, shader_id), "Shader not found");
 	ShaderData sd;
@@ -117,7 +117,7 @@ void ShaderManager::submit(StringId32 shader_id, u8 view_id)
 	sd.program = BGFX_INVALID_HANDLE;
 	sd = hash_map::get(_shader_map, shader_id, sd);
 
-	bgfx::setState(sd.state);
+	bgfx::setState(state != UINT64_MAX ? state : sd.state);
 	bgfx::submit(view_id, sd.program);
 }
 

+ 1 - 1
src/world/shader_manager.h

@@ -46,7 +46,7 @@ struct ShaderManager
 	void unload(Allocator& a, void* res);
 
 	///
-	void submit(StringId32 shader_id, u8 view_id);
+	void submit(StringId32 shader_id, u8 view_id, u64 state = UINT64_MAX);
 };
 
 } // namespace crown