Beispiel #1
0
fruitlib::pp::texture::counted_instance const
fruitlib::pp::filter::desaturate::apply(
	fruitlib::pp::texture::counted_instance const input)
{
	texture_.set(
		sge::shader::parameter::planar_texture::optional_value(
			fcppt::make_ref(
				*(input->texture()))));

	fruitlib::pp::texture::counted_instance const result =
		texture_manager_.query(
			fruitlib::pp::texture::descriptor(
				texture_size_.get(),
				sge::image::color::format::rgb8,
				texture::depth_stencil_format::off));

	sge::renderer::context::scoped_core scoped_context(
		filter_manager_.renderer(),
		result->target());

	sge::shader::scoped_pair scoped_shader(
		scoped_context.get(),
		shader_);

	filter_manager_.quad().render(
		scoped_context.get());

	return result;
}
Beispiel #2
0
void
insula::arrow::render()
{
	model_shader_.update_texture(
		"texture",
		texture_);

	graphics::shader::scoped scoped_shader(
		model_shader_);

	model::scoped scoped_model(
		renderer_,
		model_);
	
	physics::vec2 const 
		forward(
			camera_.gizmo().forward().x(),
			camera_.gizmo().forward().z());

	physics::vec3 const diff = 
		position_callback_();
		/*
		nuggets_.closest_nugget(
			fcppt::math::vector::structure_cast<physics::vec3>(
				camera_.gizmo().position())) - 
		fcppt::math::vector::structure_cast<physics::vec3>(
			camera_.gizmo().position());
		*/

	physics::vec2 const
		to_nugget(
			diff.x(),
			diff.z());

	model_shader_.set_uniform(
		"mvp",
		camera_.perspective() * 

		fcppt::math::matrix::translation(
			offset_) * 

		// NOTE: Yes, this is relative to the camera, so not perfectly
		// alright, I'll have to fix that some day
		fcppt::math::matrix::rotation_y(

			// See http://www.euclideanspace.com/maths/geometry/trig/inverse/index.htm

			(*fcppt::math::vector::atan2(forward)) - (*fcppt::math::vector::atan2(to_nugget))
));

	model_.render();
}
Beispiel #3
0
void
fruitlib::pp::system::render_result(
	sge::renderer::context::core &_context)
{
	texture_parameter_.set(
		sge::shader::parameter::planar_texture::optional_value(
			fcppt::make_ref(
				*(result_texture_->texture()))));

	sge::shader::scoped_pair scoped_shader(
		_context,
		shader_);

	filter_manager_.quad().render(
		_context);
}
Beispiel #4
0
void
fruitapp::background::cg::render(
	sge::renderer::context::core &_context)
{
	sge::shader::scoped_pair scoped_shader(
		_context,
		shader_);

	mvp_parameter_.set(
		sge::camera::matrix_conversion::world_projection(
			camera_.coordinate_system(),
			camera_.projection_matrix()));

	this->do_render(
		_context);
}
Beispiel #5
0
void
flake::volume::density_visualization::raycaster::object::render(
	sge::renderer::context::core &_context)
{
	sge::renderer::vertex::scoped_declaration scoped_vd(
		_context,
		*vertex_declaration_);

	sge::shader::scoped_pair scoped_shader(
		_context,
		shader_);

	mvp_parameter_.set(
		sge::camera::matrix_conversion::world_projection(
			camera_.coordinate_system(),
			camera_.projection_matrix()));

	camera_position_parameter_.set(
		-camera_.coordinate_system().position().get());

	camera_is_inside_cube_parameter_.set(
		this->camera_is_inside_cube()
		?
			static_cast<sge::renderer::scalar>(
				1.0f)
		:
			static_cast<sge::renderer::scalar>(
				0.0f));

	sge::renderer::state::core::blend::scoped scoped_blend_state(
		_context,
		*blend_state_);

	sge::renderer::state::core::rasterizer::object_unique_ptr const rasterizer_state(
		renderer_.create_rasterizer_state(
			sge::renderer::state::core::rasterizer::parameters(
				this->camera_is_inside_cube()
				?
					sge::renderer::state::core::rasterizer::cull_mode::counter_clockwise
				:
					sge::renderer::state::core::rasterizer::cull_mode::clockwise,
				sge::renderer::state::core::rasterizer::fill_mode::solid,
				sge::renderer::state::core::rasterizer::enable_scissor_test(
					false))));

	sge::renderer::state::core::rasterizer::scoped scoped_rasterizer_state(
		_context,
		*rasterizer_state);

	sge::renderer::state::core::sampler::scoped scoped_sampler_state{
		_context,
		sge::renderer::state::core::sampler::const_object_ref_map{
			sge::renderer::state::core::sampler::const_object_ref_map::value_type{
				sge::renderer::texture::stage{
					0u
				},
				fcppt::make_cref(
					*sampler_state_
				)
			}
		}
	};

	sge::renderer::vertex::scoped_buffer scoped_vb(
		_context,
		*vertex_buffer_);

	_context.render_nonindexed(
		sge::renderer::vertex::first(
			0u),
		sge::renderer::vertex::count(
			36u),
		sge::renderer::primitive_type::triangle_list);
}