diff options
| -rw-r--r-- | c2.cpp | 13 | ||||
| -rw-r--r-- | model.cpp | 17 | ||||
| -rw-r--r-- | model.hpp | 9 | 
3 files changed, 25 insertions, 14 deletions
| @@ -215,22 +215,23 @@ extern "C" int entrypoint() {  			raxis  		));  		monkey->update_transforms(); +		monkey->update_cbuffers( +			dev, +			transform, +			projection +		);  		ctx.debug_push("depth prepass");  		monkey->render(  			dev,  			&frame_arena, -			depth_prepass, -			transform, -			projection +			depth_prepass  		);  		ctx.debug_pop();  		ctx.debug_push("forward");  		monkey->render(  			dev,  			&frame_arena, -			pass2, -			transform, -			projection +			pass2  		);  		ctx.debug_pop(); @@ -156,16 +156,13 @@ void Model::update_transforms() {  		meshes[i].get_world(*this);  } -void Model::render( +void Model::update_cbuffers(  	Device* dev, -	Arena* a, -	Render_Pass& pass,  	const m4f& transform,  	const m4f& view_projection  ) {  	int i, c = mesh_count;  	Mesh* meshes = get_meshes(); -	Context& ctx = dev->get_ctx();  	MVP_Cbuffer* cbuffers = (MVP_Cbuffer*)dev->map_buffer(  		mvp,  		0, @@ -175,8 +172,18 @@ void Model::render(  		cbuffers[i].view_projection = view_projection;  		cbuffers[i].model = transform * meshes[i].world;  	} -	bool depth_only = !pass.colour_count;  	dev->unmap_buffer(mvp); +} + +void Model::render( +	Device* dev, +	Arena* a, +	Render_Pass& pass +) { +	int i, c = mesh_count; +	Mesh* meshes = get_meshes(); +	Context& ctx = dev->get_ctx(); +	bool depth_only = !pass.colour_count;  	for (i = 0; i < c; i++) {  		Mesh& mesh = meshes[i];  		Shader& shader = dev->get_shader(mesh.shader); @@ -27,13 +27,16 @@ struct Model : public Asset {  	void destroy(Device* dev);  	void update_transforms(); -	void render( +	void update_cbuffers(  		Device* dev, -		Arena* a, -		Render_Pass& pass,  		const m4f& transform,  		const m4f& view_projection  	); +	void render( +		Device* dev, +		Arena* a, +		Render_Pass& pass +	);  };  struct Model_Loader : public Asset_Loader { |