void DeferredShadingMSAA::initUI()
{
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar)
    {
        m_pUIApproachVar = mTweakBar->addEnum("Complex Pixel Detection Approach:", m_approach, APPROACH_OPTIONS, APPROACH_COUNT, UIReactionIDs::UIApproach);
        m_pUIBRDFVar = mTweakBar->addEnum("BRDF:", m_brdf, BRDF_OPTIONS, BRDF_COUNT, UIReactionIDs::UIBRDF);
        m_pUIAdaptiveShadingVar = mTweakBar->addValue("Adaptively Shade Complex Pixels", m_bAdaptiveShading, UIReactionIDs::UIAdaptiveShading);
        m_pUIMarkComplexPixelsVar = mTweakBar->addValue("Mark Complex Pixels", m_bMarkComplexPixels, UIReactionIDs::UIMarkComplexPixels);
        m_pUISeparateComplexPassVar = mTweakBar->addValue("Separate Complex Pixel Pass", m_bSeparateComplexPass, UIReactionIDs::UISeparateComplexPass);
        m_pUIPerSampleShadingVar = mTweakBar->addValue("Per-Sample Shading", m_bUsePerSamplePixelShader, UIReactionIDs::UIPerSampleShading);
        m_pUIExtendedModelLoaderVar = mTweakBar->addValue("Use Extended Model Loader", m_bUseExtendedModelLoader, UIReactionIDs::UIExtMeshLoader);
        mTweakBar->syncValues();
    }

    // UI elements for displaying pass statistics
    if (mFPSText)
    {
        NvUIRect tr;
        mFPSText->GetScreenRect(tr); // base off of fps element.
        m_statsText = new NvUIText("", NvUIFontFamily::SANS, (mFPSText->GetFontSize()*2)/3, NvUITextAlign::RIGHT);
        m_statsText->SetColor(NV_PACKED_COLOR(0x30,0xD0,0xD0,0xB0));
        m_statsText->SetShadow();
        mUIWindow->Add(m_statsText, tr.left, tr.top+tr.height+8);
    }
}
void MultiDrawIndirect::initUI()
{
    if (mTweakBar)
    {
        mTweakBar->addPadding();

        if (isMobilePlatform())
        {
            mTweakBar->addValue("Grid Size (n x n) :", m_GridSize, MIN_MOBILE_GRID_SIZE, MAX_MOBILE_GRID_SIZE, 1);
        }
        else
        {
            mTweakBar->addValue("Grid Size (n x n) :", m_GridSize, MIN_GRID_SIZE, MAX_GRID_SIZE, 1);
        }

        NvTweakEnum<uint32_t> callModes[] =
        {
            {"Use Multidraw", USE_MULTIDRAWINDIRECT},
            {"Use Individual Draw Calls", NO_MULTIDRAWINDIRECT},
        };

        mTweakBar->addEnum("Instancing Mode:", m_DrawInstanceMode, callModes, TWEAKENUM_ARRAYSIZE(callModes));
    }

     // UI elements for displaying triangle statistics
    if (mFPSText) 
    {
        NvUIRect tr;
        mFPSText->GetScreenRect(tr); // base off of fps element.
        m_timingStats = new NvUIText("Multi\nLine\nString", NvUIFontFamily::SANS, (mFPSText->GetFontSize()*2)/3, NvUITextAlign::RIGHT);
        m_timingStats->SetColor(NV_PACKED_COLOR(0x30,0xD0,0xD0,0xB0));
        m_timingStats->SetShadow();
        mUIWindow->Add(m_timingStats, tr.left, tr.top+tr.height+8);
    }
}
Esempio n. 3
0
//======================================================================
//======================================================================
NvUIGraphic *NvTweakBar::MakeFocusFrame()
{
    NvUIGraphicFrame *frame = new NvUIGraphicFrame("rounding.dds", 4);
    frame->SetDrawCenter(false);
//    frame->SetAlpha(0.5f);
    frame->SetColor(NV_PACKED_COLOR(0x60, 0xFF, 0xFF, 0xFF));
    return frame;
}
void TerrainTessellation::initUI(void) {
    if (mTweakBar) {
        NvTweakVarBase *var;

        NvTweakEnum<uint32_t> qualityModes[] = {
            {"Low", 0},
            {"Medium", 1},
            {"High", 2},
            {"Ultra", 3}
        };
        mTweakBar->addPadding();
        mTweakBar->addMenu("Quality", mQuality, qualityModes, TWEAKENUM_ARRAYSIZE(qualityModes), REACT_QUALITY_MODE);

        mTweakBar->addPadding();
        var = mTweakBar->addValue("Wireframe", mWireframe);
        addTweakKeyBind(var, 'W');
        var = mTweakBar->addValue("Animate", mAnimate);
        addTweakKeyBind(var, 'A');
        var = mTweakBar->addValue("Smooth Normals", mSmoothNormals);
        addTweakKeyBind(var, 'S');
        var = mTweakBar->addValue("Cull to Frustum", mCull);
        addTweakKeyBind(var, 'C');

        mTweakBar->addPadding();
        var = mTweakBar->addValue("Auto LOD", mLod);
        mTweakBar->subgroupSwitchStart(var);
            mTweakBar->subgroupSwitchCase(true);
                var = mTweakBar->addValue("Triangle size", mParams.triSize, 1.0f, 50.0f, 1.0f);
                addTweakKeyBind(var, ']', '[');
            mTweakBar->subgroupSwitchCase(false);
                mTweakBar->addValue("Inner tessellation factor", mParams.innerTessFactor, 1.0f, 64.0f, 1.0f);
                mTweakBar->addValue("Outer tessellation factor", mParams.outerTessFactor, 1.0f, 64.0f, 1.0f);
        mTweakBar->subgroupSwitchEnd();

        mTweakBar->addValue("Noise frequency", mParams.noiseFreq, 0.0f, 2.0f, 0.05f);
        mTweakBar->addValue("Terrain height", mParams.heightScale, 0.0f, 2.0f, 0.05f);
        mTweakBar->addValue("Noise octaves", (uint32_t&)mParams.noiseOctaves, 1, 12);
    
        mTweakBar->addPadding(2);
        var = mTweakBar->addValue("Reload shaders", mReload, true);
        addTweakKeyBind(var, 'R');

        mTweakBar->syncValues();
    }

    // UI element for display triangle statistics
    if (mFPSText) {
        NvUIRect tr;
        mFPSText->GetScreenRect(tr);
        mStatsText = new NvUIValueText("Triangles", NvUIFontFamily::SANS, mFPSText->GetFontSize(), NvUITextAlign::RIGHT,
                                        mNumPrimitives, NvUITextAlign::RIGHT);
        mStatsText->SetColor(NV_PACKED_COLOR(0x30,0xD0,0xD0,0xB0));
        mStatsText->SetShadow();
        mUIWindow->Add(mStatsText, tr.left, tr.top+tr.height+8);
    }
}
Esempio n. 5
0
//=====================================================================
//=====================================================================
NvTweakBar::NvTweakBar(float width, float height)
: NvUIContainer(width, height, new NvUIGraphicFrame("info_text_box_thin.dds", 24, 24))
, m_defaultRows(20) //!!!!TBD TODO just picked a number that seems good atm.
, m_widthPadFactor(0.1f) // !!!!!TBD TODO picking padding that seems decent on L/R sides.
, m_padHeight(0)
, m_textShadows(true)
, m_compactLayout(false)
, m_lastElX(0)
, m_lastElY(0)
, m_xInset(0)
, m_lastActionCode(TWEAKBAR_ACTIONCODE_BASE) // so automatic codes are high up.
, m_subgroupLastY(0)
, m_subgroupMaxY(0)
, m_subgroupContainer(0L)
, m_subgroupSwitchVar(0L)
{
    m_canFocus = true;

    // trying a slightly mid-cyan color for labels.
    m_labelColor = NV_PACKED_COLOR(64,192,192,255);
    // keep value white until we can pass through to buttons and others
    m_valueColor = NV_PACKED_COLOR(255,255,255,255); 

    m_lastElX = 0 + (GetWidth() - GetDefaultLineWidth())/2;
    m_lastElY = GetStartOffY();

    // can't do this in constructor, order of ops not guaranteed somehow...
    m_padHeight = GetDefaultLineHeight()*0.35f;

// !!!TBD Hack to make it a little more see-through for the moment...
//    if (m_background)
//        m_background->SetAlpha(0.75f);

    SetConsumeClicks(true);
    SetFocusHilite(MakeFocusFrame());
}
Esempio n. 6
0
NvUISlider *NvTweakBar::MakeStdSlider(const char* name, float val, float min, float max, float step, bool integral, uint32_t code/*==0*/)
{
    uint32_t actionCode = code==0?++m_lastActionCode:code;
    float wide = GetDefaultLineWidth();
    float high = GetDefaultLineHeight();

    // !!!TBD TODO 
    // text and output value update should be embedded in the slider itself...
  
    // this logic should all move into valuebar.
/* !!!!TBD
    if (m_compactLayout)
    {
        out->SetDimensions(wide*0.2f, high);
        text->SetDimensions(wide*0.3f, high);
    }
*/

    NvUIGraphicFrame *emptybar = new NvUIGraphicFrame("slider_empty.dds", 8);
    NvUIGraphicFrame *fullbar = new NvUIGraphicFrame("slider_full.dds", 8);
    fullbar->SetAlpha(0.6f); // make the fill a bit see-through.
    fullbar->SetColor(NV_PACKED_COLOR(0xFF, 0xE0, 0x50, 0xFF)); // yellow

    NvUIGraphic *thumb = new NvUIGraphic("slider_thumb.dds");
    thumb->SetDimensions(high*0.5f, high*1.25f);

    NvUISlider *sld = new NvUISlider(emptybar, fullbar, thumb, actionCode);
    sld->SetSmoothScrolling(true);
    sld->SetIntegral(integral);
    sld->SetMaxValue(max);
    sld->SetMinValue(min);
    sld->SetStepValue(step);
    sld->SetValue(val);
    sld->SetDimensions(wide, high/4);
    sld->SetHitMargin(high/4, high/4); // !!!!TBD TODO

    return sld;
}
void OptimizationApp::initUI(void) {
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar) { // create our tweak ui
        // Show the app title
        mTweakBar->addLabel("Optimizations Sample App", true);

        mTweakBar->addPadding();
        mTweakBar->addValue("Draw particles:", m_sceneRenderer->getParticleParams()->render);
        mTweakBar->addValue("Use depth pre-pass:"******"Render low res scene:", m_sceneRenderer->getSceneParams()->renderLowResolution);
        mTweakBar->addValue("Render low res particles:", m_sceneRenderer->getParticleParams()->renderLowResolution);
        mTweakBar->addValue("Use cross-bilateral upsampling:", m_sceneRenderer->getUpsamplingParams()->useCrossBilateral);
    }

    // UI elements for displaying triangle statistics
    if (mFPSText) {
        NvUIRect tr;
        mFPSText->GetScreenRect(tr); // base off of fps element.
        m_timingStats = new NvUIText("Multi\nLine\nString", NvUIFontFamily::SANS, (mFPSText->GetFontSize()*2)/3, NvUITextAlign::RIGHT);
        m_timingStats->SetColor(NV_PACKED_COLOR(0x30,0xD0,0xD0,0xB0));
        m_timingStats->SetShadow();
        mUIWindow->Add(m_timingStats, tr.left, tr.top+tr.height+8);
    }
}
Esempio n. 8
0
//======================================================================
//======================================================================
NvUIPopup *NvTweakBar::MakeStdPopup(const char* name, NvTweakEnumVar<uint32_t> &refvar, const NvTweakEnum<uint32_t> values[], uint32_t valueCount, uint32_t actionCode/*==0*/)
{
    uint32_t code = actionCode==0?++m_lastActionCode:actionCode; // need to stash code so all radios use the same
    float wide = GetDefaultLineWidth();
    float high = GetDefaultLineHeight();
    float fontFactor = NVB_HEIGHT_TO_FONT_FACTOR;    

    NvUIButton *btn = NULL;  
    NvUIGraphicFrame *frame;
    NvUIElement *els[3];

    els[2] = NULL;

    els[0] = new NvUIGraphic("arrow_blue_down.dds");
    els[0]->SetDimensions(high/2, high/2);
    els[1] = new NvUIGraphic("arrow_pressed_down.dds");
    els[1]->SetDimensions(high/2, high/2);
    btn = new NvUIButton(NvUIButtonType::CHECK, code, els);

    // first, the button styling
    frame = new NvUIGraphicFrame("frame_thin.dds", 10);
    frame->SetAlpha(1.5f);
    frame->SetDimensions(wide, high);
    els[0] = frame;
    frame = new NvUIGraphicFrame("frame_thin.dds", 10);
    frame->SetAlpha(1.8f);
    frame->SetDimensions(wide, high);
    frame->SetColor(NV_PACKED_COLOR(0xFF, 0xE0, 0x50, 0xFF)); // yellow
    els[1] = frame;

    // then, the popup menu framing
    frame = new NvUIGraphicFrame("frame_thin.dds", 10);
    frame->SetAlpha(1.8f);

    NvUIPopup *dd = new NvUIPopup(code, els, frame, btn, name, high*fontFactor, true);
    for (uint32_t i=0; i<valueCount; i++)
    {
        frame = new NvUIGraphicFrame("icon_button_highlight_small.dds", 8);
        frame->SetDimensions(wide, high);
        frame->SetAlpha(0);
        els[0] = frame;
        frame = new NvUIGraphicFrame("icon_button_highlight_small.dds", 8);
        frame->SetDimensions(wide, high);
        frame->SetAlpha(0.5f);
        frame->SetColor(NV_PACKED_COLOR(0xFF, 0xE0, 0x50, 0xFF)); // yellow
        els[1] = frame;

        btn = new NvUIButton(NvUIButtonType::PUSH, code, els, values[i].m_name, (high*fontFactor), true);
        btn->SetSubCode(i); // !!!!TBD should this be set inside AddItem??
        btn->SetHitMargin(high*0.05f, high*0.05f);
        btn->SetSlideInteractGroup(code);
        //btn->SetDrawState(0);
        //btn->SetDimensions(wide, high); // reset for check/radio buttons...

        NvTweakEnumUI<uint32_t> *twui = new NvTweakEnumUI<uint32_t>(refvar, i, btn, code);
        dd->AddItem(twui, values[i].m_name, values[i].m_value);
    }

    // refvar will convert to uint32 value for passing to SetItemValueActive
    dd->SetActiveItemValue(refvar);

    // add focus frame to the popup menu
    NvUIPopupMenu* mnu = dd->GetUIPopupMenu();
#if later
    frame = new NvUIGraphicFrame("frame_thin.dds", 10);
    frame->SetAlpha(0.5f);
    frame->SetColor(NV_PACKED_COLOR(0xFF, 0xE0, 0x50, 0xFF)); // yellow
#endif
    mnu->SetFocusHilite(MakeFocusFrame());

    return dd;
}