void DisplayRenderTargetChain::Clear(const UInt _uClearColor)
	{
		//EnableAllRenderTargets();
		RenderBegin(DisplayRenderTarget::ERenderMode_NORMALPROCESS);
		RenderBeginPass(0);
		m_rDisplay.GetDevicePtr()->Clear(0L, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, _uClearColor, 1.0f, 0L);
		RenderEndPass();
		RenderEnd();
   	}
Beispiel #2
0
void TextRenderer::RenderWithFunctor(DrwFunctor drw_fnr, const Rect& drw_rct, 
                                   const Rect& obj_rct)
{
    Rect rct = Intersection(drw_rct, obj_rct);
    if( !rct.IsNull() )
    {
        CairoStateSave save(caiCont);
        RenderBegin(rct);

        drw_fnr();

        RenderEnd(rct);
    }
}
Beispiel #3
0
void Render(float dt)
{
    static unsigned int frameIndex = 0;
    frameIndex++;
    ovrFrameTiming timing = ovrHmd_BeginFrame(s_hmd, 0);

    // ovrSensorState ss = ovrHmd_GetSensorState(s_hmd, timing.ScanoutMidpointSeconds);
    // TODO: Use this for head tracking...
    // TODO: Use player height from SDK

    glBindBuffer(GL_ARRAY_BUFFER, 0);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);

    // render into fbo
    glBindFramebuffer(GL_FRAMEBUFFER, s_fbo);

    // TODO: enable this when we have more complex rendering.
    glEnable(GL_DEPTH_TEST);
    glDisable(GL_CULL_FACE);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    static float t = 0.0;
    t += dt;

    // clear render target
    glViewport(0, 0, s_renderTargetSize.w, s_renderTargetSize.h);
    glClearColor(s_clearColor.x, s_clearColor.y, s_clearColor.z, s_clearColor.w);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    for (int i = 0; i < 2; i++)
    {
        ovrEyeType eye = s_hmdDesc.EyeRenderOrder[i];
        ovrPosef pose = ovrHmd_BeginEyeRender(s_hmd, eye);

        glViewport(s_eyeTexture[eye].Header.RenderViewport.Pos.x,
                   s_eyeTexture[eye].Header.RenderViewport.Pos.y,
                   s_eyeTexture[eye].Header.RenderViewport.Size.w,
                   s_eyeTexture[eye].Header.RenderViewport.Size.h);

        Quatf q(pose.Orientation.x, pose.Orientation.y, pose.Orientation.z, pose.Orientation.w);
        Vector3f p(pose.Position.x, pose.Position.y, pose.Position.z);

        Matrixf cameraMatrix = Matrixf::QuatTrans(q, s_cameraPos);
        Matrixf viewCenter = cameraMatrix.OrthoInverse();

        // let ovr compute projection matrix, cause it's hard.
        ovrMatrix4f ovrProj = ovrMatrix4f_Projection(s_eyeRenderDesc[eye].Fov, 0.1f, 10000.0f, true);

        // convert to abaci matrix
        Matrixf projMatrix = Matrixf::Rows(Vector4f(ovrProj.M[0][0], ovrProj.M[0][1], ovrProj.M[0][2], ovrProj.M[0][3]),
                                           Vector4f(ovrProj.M[1][0], ovrProj.M[1][1], ovrProj.M[1][2], ovrProj.M[1][3]),
                                           Vector4f(ovrProj.M[2][0], ovrProj.M[2][1], ovrProj.M[2][2], ovrProj.M[2][3]),
                                           Vector4f(ovrProj.M[3][0], ovrProj.M[3][1], ovrProj.M[3][2], ovrProj.M[3][3]));

        // use EyeRenderDesc.ViewAdjust to do eye offset.
        Matrixf viewMatrix = viewCenter * Matrixf::Trans(Vector3f(s_eyeRenderDesc[eye].ViewAdjust.x,
                                                                  s_eyeRenderDesc[eye].ViewAdjust.y,
                                                                  s_eyeRenderDesc[eye].ViewAdjust.z));

        // compute model matrix for terminal
        const float kTermScale = 0.001f;
        const Vector3f termOrigin(-2 * kFeetToMeters, 6.75f * kFeetToMeters, -2.5 * kFeetToMeters);
        Matrixf modelMatrix = Matrixf::ScaleQuatTrans(Vector3f(kTermScale, -kTermScale, kTermScale),
                                                      Quatf::AxisAngle(Vector3f(0, 1, 0), 0),
                                                      termOrigin);
        RenderBegin();

        RenderFloor(projMatrix, viewMatrix, 0.0f);

        RenderTextBegin(projMatrix, viewMatrix, modelMatrix);
        for (int j = 0; j < win_get_text_count(); j++)
        {
            gb::Text* text = (gb::Text*)win_get_text(j);
            if (text)
            {
                RenderText(text->GetQuadVec());
            }
        }
        RenderTextEnd();

        RenderEnd();
        ovrHmd_EndEyeRender(s_hmd, eye, pose, &s_eyeTexture[eye]);
    }

    ovrHmd_EndFrame(s_hmd);
}
Beispiel #4
0
	void RenderPass::RenderBegin(int iFrameBuffer, bool bClear) {
		UseFrameBuffer(iFrameBuffer);
		RenderBegin(m_pCurFrameBuffer.get(), bClear);
	}
QFilmWidget::QFilmWidget(QWidget* pParent) :
	QGroupBox(pParent),
	m_GridLayout(),
	m_PresetType(),
	m_PresetsLayout(),
	m_WidthSpinner(),
	m_HeightSpinner(),
	m_ExposureSlider(),
	m_ExposureSpinner(),
	m_NoiseReduction()
{
	setTitle("Film");
	setStatusTip("Film properties");
	setToolTip("Film properties");

	// Create grid layout
	m_GridLayout.setColumnMinimumWidth(0, 75);
	setLayout(&m_GridLayout);

	m_PresetType.addItem("NTSC D-1 (video)");
	m_PresetType.addItem("NTSC DV (video)");
	m_PresetType.addItem("PAL (video)");
	m_PresetType.addItem("PAL D-1 (video)");
	m_PresetType.addItem("HDTV (video)");

	m_GridLayout.addWidget(new QLabel("Type"), 0, 0);
	m_GridLayout.addWidget(&m_PresetType, 0, 1);
	
	m_GridLayout.addLayout(&m_PresetsLayout, 1, 2, 2, 1);
	
	m_PresetsLayout.addWidget(&m_Preset[0], 0, 1);
	m_PresetsLayout.addWidget(&m_Preset[1], 0, 2);
	m_PresetsLayout.addWidget(&m_Preset[2], 1, 1);
	m_PresetsLayout.addWidget(&m_Preset[3], 1, 2);

	QObject::connect(&m_PresetType, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(SetPresetType(const QString&)));
	
	QObject::connect(&m_Preset[0], SIGNAL(SetPreset(QFilmResolutionPreset&)), this, SLOT(SetPreset(QFilmResolutionPreset&)));
	QObject::connect(&m_Preset[1], SIGNAL(SetPreset(QFilmResolutionPreset&)), this, SLOT(SetPreset(QFilmResolutionPreset&)));
	QObject::connect(&m_Preset[2], SIGNAL(SetPreset(QFilmResolutionPreset&)), this, SLOT(SetPreset(QFilmResolutionPreset&)));
	QObject::connect(&m_Preset[3], SIGNAL(SetPreset(QFilmResolutionPreset&)), this, SLOT(SetPreset(QFilmResolutionPreset&)));

	m_PresetType.setCurrentIndex(4);

	const int ResMin = powf(2.0f, 5);
	const int ResMax = powf(2.0f, 11);

	// Film width
	m_GridLayout.addWidget(new QLabel("Film width"), 1, 0);

    m_WidthSpinner.setRange(ResMin, ResMax);
	m_GridLayout.addWidget(&m_WidthSpinner, 1, 1);
	
 	QObject::connect(&m_WidthSpinner, SIGNAL(valueChanged(int)), this, SLOT(SetWidth(int)));

	QPushButton B;
	
	// Film height
	m_GridLayout.addWidget(new QLabel("Film height"), 2, 0);

    m_HeightSpinner.setRange(ResMin, ResMax);
	m_GridLayout.addWidget(&m_HeightSpinner, 2, 1);
	
 	QObject::connect(&m_HeightSpinner, SIGNAL(valueChanged(int)), this, SLOT(SetHeight(int)));

	// Exposure
	m_GridLayout.addWidget(new QLabel("Exposure"), 3, 0);

	m_ExposureSlider.setOrientation(Qt::Horizontal);
	m_ExposureSlider.setRange(0.0f, 1.0f);
	m_GridLayout.addWidget(&m_ExposureSlider, 3, 1);

	m_ExposureSpinner.setRange(0.0f, 1.0f);
	m_GridLayout.addWidget(&m_ExposureSpinner, 3, 2);

 	QObject::connect(&m_ExposureSlider, SIGNAL(valueChanged(double)), &m_ExposureSpinner, SLOT(setValue(double)));
 	QObject::connect(&m_ExposureSlider, SIGNAL(valueChanged(double)), this, SLOT(SetExposure(double)));
 	QObject::connect(&m_ExposureSpinner, SIGNAL(valueChanged(double)), &m_ExposureSlider, SLOT(setValue(double)));

	gStatus.SetStatisticChanged("Camera", "Film", "", "", "");

	m_NoiseReduction.setText("Noise Reduction");
	m_GridLayout.addWidget(&m_NoiseReduction, 4, 1);

	QObject::connect(&m_NoiseReduction, SIGNAL(stateChanged(const int&)), this, SLOT(OnNoiseReduction(const int&)));

	QObject::connect(&gStatus, SIGNAL(RenderBegin()), this, SLOT(OnRenderBegin()));
	QObject::connect(&gStatus, SIGNAL(RenderEnd()), this, SLOT(OnRenderEnd()));

	QObject::connect(&gCamera.GetFilm(), SIGNAL(Changed(const QFilm&)), this, SLOT(OnFilmChanged(const QFilm&)));
}