예제 #1
0
void pass_positions::pass_reset()
{
    EPS_STATE_SAMPLER_0(texture_displacement_.get_product());
    EPS_STATE_PROGRAM(program_reset_.get_product());

    program_reset_.uniform_value(utils::to_int(reset_enum::u_displacement), 0);
    square_.render(program_reset_, utils::to_int(reset_enum::a_vertex_xy));
}
예제 #2
0
void gradient::process(float)
{
    EPS_STATE_SAMPLER_0(get_inputs().get_slot(pass_input_slot::input_0));
    EPS_STATE_PROGRAM(program_.get_product());

    program_.uniform_value(utils::to_int(program_enum::u_source), 0);
    program_.uniform_value(utils::to_int(program_enum::u_color_1), color_1_);
    program_.uniform_value(utils::to_int(program_enum::u_color_2), color_2_);

    square_.render(program_, utils::to_int(program_enum::a_vertex_xy),
                             utils::to_int(program_enum::a_vertex_uv));
}
예제 #3
0
void pass_positions::pass_process(float dt)
{
    EPS_STATE_SAMPLER_0(get_inputs().get_product());
    EPS_STATE_SAMPLER_1(get_inputs().get_slot(rendering::pass_input_slot::input_0));
    EPS_STATE_PROGRAM(program_process_.get_product());

    program_process_.uniform_value(utils::to_int(process_enum::u_positions), 0);
    program_process_.uniform_value(utils::to_int(process_enum::u_velocities), 1);
    program_process_.uniform_value(utils::to_int(process_enum::u_dt), dt);

    square_.render(program_process_, utils::to_int(process_enum::a_vertex_xy));
}
예제 #4
0
void pass_particles::process(float)
{
    EPS_STATE_BLEND(GL_SRC_ALPHA, GL_ONE);
    EPS_STATE_SAMPLER_0(get_inputs().get_slot(rendering::pass_slot::slot_0));
    EPS_STATE_VERTICES(product_index_.get_product());
    EPS_STATE_PROGRAM(program_.get_product());

    program_.attribute_array_enable(utils::to_int(product_enum::a_product_uv));
    program_.attribute_array(utils::to_int(product_enum::a_product_uv), 0, 2, 0);
    program_.uniform_value(utils::to_int(product_enum::u_positions), 0);

    glDrawArrays(GL_POINTS, 0, product_index_.get_product_count());
}
예제 #5
0
void pass_fire::process(float)
{
    EPS_STATE_SAMPLER_0(get_inputs().get_slot(rendering::pass_input_slot::input_0));
    EPS_STATE_SAMPLER_1(texture_background_.get_product());
    EPS_STATE_PROGRAM(program_.get_product());

    program_.uniform_value(utils::to_int(program_enum::u_fire), 0);
    program_.uniform_value(utils::to_int(program_enum::u_background), 1);
    program_.uniform_value(utils::to_int(program_enum::u_texel), texel_);

    square_.render(program_, utils::to_int(program_enum::a_vertex_xy),
                             utils::to_int(program_enum::a_vertex_uv));
}
예제 #6
0
파일: tone.cpp 프로젝트: PkXwmpgN/elements
void tone::process(float)
{
    EPS_STATE_SAMPLER_0(get_inputs().get_slot(pass_slot::slot_0));
    EPS_STATE_SAMPLER_1(get_inputs().get_slot(pass_slot::slot_1));
    EPS_STATE_PROGRAM(program_.get_product());

    program_.uniform_value(utils::to_int(program_enum::u_source_0), 0);
    program_.uniform_value(utils::to_int(program_enum::u_source_1), 1);
    program_.uniform_value(utils::to_int(program_enum::u_exposure), exposure_);
    program_.uniform_value(utils::to_int(program_enum::u_gamma), gamma_);

    square_.render(program_, utils::to_int(program_enum::a_vertex_xy),
                             utils::to_int(program_enum::a_vertex_uv));
}
예제 #7
0
파일: slider.cpp 프로젝트: jauseg/elements
void slider::draw_tracker(const math::vec2 & pos, float value)
{
    EPS_STATE_PROGRAM(program_slider_tracker_.get_product());

    program_slider_tracker_.uniform_value(utils::to_int(program_enum::u_transform), get_system()->transform());
    program_slider_tracker_.uniform_value(utils::to_int(program_enum::u_color), color_tracker_);

    float offset = get_size().y * 0.8f;
    math::vec2 tracker(pos.x + (get_size().x - offset) * value, pos.y + (get_size().y - offset) * 0.5f);
    GLfloat vertices[] =
    {
        (tracker.x),          (tracker.y),          0.0f, 1.0f,
        (tracker.x + offset), (tracker.y),          1.0f, 1.0f,
        (tracker.x + offset), (tracker.y + offset), 1.0f, 0.0f,
        (tracker.x),          (tracker.y + offset), 0.0f, 0.0f
    };
    square_.construct(vertices);
    square_.render(program_slider_tracker_, utils::to_int(program_enum::a_vertex_xy),
                                            utils::to_int(program_enum::a_vertex_uv));
}
예제 #8
0
파일: slider.cpp 프로젝트: jauseg/elements
void slider::draw_slider_end(const math::vec2 & pos, float value)
{
    EPS_STATE_PROGRAM(program_slider_.get_product());

    program_slider_.uniform_value(utils::to_int(program_enum::u_transform), get_system()->transform());
    program_slider_.uniform_value(utils::to_int(program_enum::u_color), color_slider_);

    float offset_y = get_size().y * 0.45f;
    float offset_x = get_size().x * value;

    GLfloat vertices[] =
    {
        (pos.x + offset_x), (pos.y + offset_y),                    0.0f, 1.0f,
        (pos.x + get_size().x), (pos.y + offset_y),                1.0f, 1.0f,
        (pos.x + get_size().x), (pos.y + get_size().y - offset_y), 1.0f, 0.0f,
        (pos.x + offset_x), (pos.y + get_size().y - offset_y),     0.0f, 0.0f
    };
    square_.construct(vertices);
    square_.render(program_slider_, utils::to_int(program_enum::a_vertex_xy),
                                    utils::to_int(program_enum::a_vertex_uv));
}