void ComputeWaterSimulation::initUI(void) {
	if (mTweakBar) {
		// Show the app title
		//mTweakBar->addLabel("Compute Water Surface", true);
		//mTweakBar->addPadding();

		// Animation params
		mTweakBar->addValue("Animate", mSettings.Animate);
		mTweakBar->addValue("Use Compute Shader", mSettings.UseComputeShader);
		mTweakBar->addValue("Add Rain", mSettings.AddRain);
		mTweakBar->addPadding();

		// Surface params
		mTweakBar->addMenu("Num Surfaces", mNumWaves, WATER_NUM_THREADS, TWEAKENUM_ARRAYSIZE(WATER_NUM_THREADS));
		mTweakBar->addMenu("Grid Size", mGridSize, WATER_GRID_SIZE, TWEAKENUM_ARRAYSIZE(WATER_GRID_SIZE));
		mTweakBar->addMenu("Water Shader", mWaterShaderType, WATER_SHADER_TYPE, TWEAKENUM_ARRAYSIZE(WATER_SHADER_TYPE));
		mTweakBar->addPadding();

		// Wave simulation params
		mTweakBar->addValue("Damping", mSettings.Damping, 0.8f, 1.0f, 0.01f);
		mTweakBar->addValue("Wave Size", mSettings.Size, 0.0f, 20.0f, 1.0f);	
		mTweakBar->addValue("Wave Strength", mSettings.Strength, 0.0f, 3.0f, 0.1f);
		mTweakBar->addValue("Rain Frequency", mSettings.Frequency, 0, 20, 1);
		mTweakBar->addPadding();

		mTweakBar->addValue("Reset", mReset, true);

		mTweakBar->syncValues();
	}
}
Beispiel #2
0
void InstancingApp::initUI() {
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar) { // create our tweak ui
        // render method
        NvTweakEnum<uint32_t> renderModes[] =
        {
            {"None", NO_INSTANCING},
            {"Shader", SHADER_INSTANCING},
            {"Hardware", HARDWARE_INSTANCING}
        };

        if (!requireExtension("GL_ARB_instanced_arrays", false) &&
                !requireExtension("GL_NV_draw_instanced", false))
            mTweakBar->addEnum("Instancing Mode:", m_instancingOptions, renderModes, TWEAKENUM_ARRAYSIZE(renderModes)-1);
        else
            mTweakBar->addEnum("Instancing Mode:", m_instancingOptions, renderModes, TWEAKENUM_ARRAYSIZE(renderModes));

        // scene
        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> renderScenes[] =
        {
            {"Boxes", BOXES_SCENE},
            {"Grass", GRASS_SCENE},
        };
        mTweakBar->addEnum("Render Mode:", m_sceneIndex, renderScenes, TWEAKENUM_ARRAYSIZE(renderScenes));

        // instance count
        mTweakBar->addPadding();
        mTweakBar->addValue("Instance Count:", m_instanceCount, MAX_INSTANCES, MAX_OBJECTS, MAX_INSTANCES);

        // test a checkbox
        //mTweakBar->addPadding();
        //mTweakBar->addValue("Test Check:", testbool);
    }
}
void NormalBlendedDecal::initUI()
{
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar) { // create our tweak ui

        // Lock options
        bool isPSISupported = getGLContext()->isExtensionSupported("GL_NV_fragment_shader_interlock");
        if (isPSISupported) {
            NvTweakEnum<uint32_t> locks[] =
            {
                {"No Lock", LOCK_NONE},
                {"MemoryBarrier", LOCK_MEMORY_BARRIER},
                {"PixelShaderInterlock", LOCK_PIXEL_SHADER_INTERLOCK},
            };
            mTweakBar->addEnum("Lock Option:", (uint32_t&)mLock, locks, TWEAKENUM_ARRAYSIZE(locks), REACT_LOCK_METHOD);
        } else {
            NvTweakEnum<uint32_t> locks[] =
            {
                {"No Lock", LOCK_NONE},
                {"MemoryBarrier", LOCK_MEMORY_BARRIER},
            };
            mTweakBar->addEnum("Lock Option:", (uint32_t&)mLock, locks, TWEAKENUM_ARRAYSIZE(locks));
        }

        // View options
        NvTweakEnum<uint32_t> viewsOptions[] =
        {
            {"Default", VIEW_DEFAULT},
            {"Normals", VIEW_NORMALS},
            {"Decal Boxes", VIEW_DECAL_BOXES},
        };
        mTweakBar->addPadding();
        mTweakBar->addEnum("View Option:", (uint32_t&)mViewOption, viewsOptions, TWEAKENUM_ARRAYSIZE(viewsOptions));

        mTweakBar->addValue("Model Grid Size", mSqrtNumModels, 0, 10, 1);
#if (0) // Too many options
        mTweakBar->addValue("Model Distance", mModelDistance, 0.0f, 4.0f, 0.01f);
        mTweakBar->addValue("Number of Decals", mNumDecals, 0, 100, 1);
        mTweakBar->addValue("Decal Size", mDecalSize, 0.0f, 4.0f, 0.01f);
#endif

        // Decals options
        mTweakBar->addPadding();
        mTweakBar->addValue("Decal Distance", mDecalDistance, 0.0f, 4.0f, 0.01f);
        mTweakBar->addValue("Decal Blend Weight", mBlendWeight, 0.0f, 1.0f, 0.01f);

        // Model options
        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> models[] =
        {
            {"Bunny", BUNNY_MODEL},
            {"Box", BOX_MODEL},
        };
        mTweakBar->addEnum("Models:", mModelID, models, TWEAKENUM_ARRAYSIZE(models));
    }
}
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);
    }
}
void SkinningAppVk::initUI(void) {
	if (mTweakBar) {
		NvTweakVarBase *var;
		// expose the rendering modes
		NvTweakEnum<uint32_t> renderModes[] = {
			{ "Color", 0 },
			{ "Normals", 1 },
			{ "Weights", 2 }
		};
		var = mTweakBar->addEnum("Render Mode", mRenderMode, renderModes, TWEAKENUM_ARRAYSIZE(renderModes));
		addTweakKeyBind(var, NvKey::K_M);
		addTweakButtonBind(var, NvGamepad::BUTTON_Y);

		mTweakBar->addPadding();
		var = mTweakBar->addValue("Single Bone Skinning", mSingleBoneSkinning);
		addTweakKeyBind(var, NvKey::K_B);
		addTweakButtonBind(var, NvGamepad::BUTTON_X);

		mTweakBar->addPadding();
		mTimeScalar = 1.0f;
		var = mTweakBar->addValue("Animation Speed", mTimeScalar, 0, 5.0, 0.1f);
		addTweakKeyBind(var, NvKey::K_RBRACKET, NvKey::K_LBRACKET);
		addTweakButtonBind(var, NvGamepad::BUTTON_RIGHT_SHOULDER, NvGamepad::BUTTON_LEFT_SHOULDER);
	}
}
////////////////////////////////////////////////////////////////////////////////
//
//  Method: SkinningApp::initUI()
//
//    Sets up the user interface
//
////////////////////////////////////////////////////////////////////////////////
void SkinningApp::initUI() {
    if (mTweakBar) {
        NvTweakVarBase *var;
        // expose the rendering modes
        NvTweakEnum<uint32_t> renderModes[] = {
            {"Color", 0},
            {"Normals", 1},
            {"Weights", 2}
        };
        var = mTweakBar->addEnum("Render Mode", m_renderMode, renderModes, TWEAKENUM_ARRAYSIZE(renderModes));
        addTweakKeyBind(var, NvKey::K_M);
        addTweakButtonBind(var, NvGamepad::BUTTON_Y);

        mTweakBar->addPadding();
        var = mTweakBar->addValue("Single Bone Skinning", m_singleBoneSkinning);
        addTweakKeyBind(var, NvKey::K_B);
        addTweakButtonBind(var, NvGamepad::BUTTON_X);

        mTweakBar->addPadding();
        m_timeScalar = 1.0f;
        var = mTweakBar->addValue("Animation Speed", m_timeScalar, 0, 5.0, 0.1f);
        addTweakKeyBind(var, NvKey::K_RBRACKET, NvKey::K_LBRACKET);
        addTweakButtonBind(var, NvGamepad::BUTTON_RIGHT_SHOULDER, NvGamepad::BUTTON_LEFT_SHOULDER);
    }

    // Change the filtering for the framerate
    mFramerate->setMaxReportRate(.2f);
    mFramerate->setReportFrames(20);

    // Disable wait for vsync
    getGLContext()->setSwapInterval(0);  
}
void InstancedTessellation::initUI() {
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar) { // create our tweak ui
        // models
        NvTweakEnum<uint32_t> Models[] =
        {
            {m_pModelNames[eBuddha], eBuddha},
            {m_pModelNames[eArmadillo], eArmadillo},
            {m_pModelNames[eDragon], eDragon},
        };
        mTweakBar->addEnum("Models:", m_modelIndex, Models, TWEAKENUM_ARRAYSIZE(Models));

        // tessellation modes
        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> tessellationModes[] =
        {
            {"NPatch", eNPatch},
            {"Deformation", eDeformation},
        };
        mTweakBar->addEnum("Render Mode:", m_tessMode, tessellationModes, TWEAKENUM_ARRAYSIZE(tessellationModes));

        // instance count
        mTweakBar->addPadding();
        mTweakBar->addValue("Tess Factor:", m_tessFactor, 1, MAX_TESS_LEVEL, 1);

        // tessellation modes
        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> instancingModes[] =
        {
            {"Shader Instancing", 0},
            {"Hardware Instancing", 1},
        };
        if( m_hwInstancing )
         mTweakBar->addEnum("Instancing Mode:", m_instancing, instancingModes, TWEAKENUM_ARRAYSIZE(instancingModes));
        else
         mTweakBar->addEnum("Instancing Mode:", m_instancing, instancingModes, TWEAKENUM_ARRAYSIZE(instancingModes)-1);

        // rednering modes
        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> renderingModes[] =
        {
            {"Solid", 0},
            {"Wireframe", 1},
        };
        mTweakBar->addEnum("Rendering Mode:", m_wireframe, renderingModes, TWEAKENUM_ARRAYSIZE(renderingModes));
    }
}
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);
    }
}
void CascadedShadowMapping::initUI(void) {
    if (mTweakBar)
    {
        NvTweakEnum<uint32_t> shadowMapMethods[] =
        {
            { "Normal GS", ShadowMapMethod::GsNoCull },
            { "Normal GS With Viewport Culling", ShadowMapMethod::GsCull },
            { "Viewport Multicast With Culling", ShadowMapMethod::MulticastCull },
            { "Multicast with Fast GS and Culling", ShadowMapMethod::FgsMulticastCull },
            { "VS Only With Multicast", ShadowMapMethod::VsOnlyMulticast }
        };
        mTweakBar->addEnum("Shadow Map Method", m_method, shadowMapMethods, TWEAKENUM_ARRAYSIZE(shadowMapMethods), UIReactionIDs::Method);
        mTweakBar->addValue("Number of Frustum Segments", m_frustumSegmentCount, 1, MAX_CAMERA_FRUSTUM_SPLIT_COUNT, 1, UIReactionIDs::SegmentCount);
    }

    NvSampleApp::mFramerate->setMaxReportRate(0.25f);
    NvSampleApp::mFramerate->setReportFrames(5);
    NvAppBase::getGLContext()->setSwapInterval(0);
    CHECK_GL_ERROR();
}
Beispiel #10
0
void FXAA::initUI() {
    // sample apps automatically have a tweakbar they can use.
    if (mTweakBar) { // create our tweak ui
		mTweakBar->addValue("Auto Spin", m_autoSpin);
		mTweakBar->addPadding();
		mTweakBar->addValue("Line Width", m_lineWidth, 0.1f, 3.0f);

		mTweakBar->addPadding();
		NvTweakEnum<uint32_t> FXAALevel[] =
        {
            { "Off", 0 },
            { "Fastest (10)", 1 },
            { "Default (12)", 2 },
            { "High Quality (29)", 3 },
			{ "Extreme Quality (39)", 4 },
        };

        mTweakBar->addEnum("FXAA Level:", m_FXAALevel, FXAALevel, TWEAKENUM_ARRAYSIZE(FXAALevel), 0x11);
    }
}
Beispiel #11
0
void TopazSample::initUI()
{
	if (mTweakBar) 
	{
		NvTweakEnum<uint32_t> enumVals[] = 
		{
			{ "standard", DRAW_STANDARD },
			{ "nvcmdlist list", DRAW_TOKEN_LIST },
			{ "weight blended standard", DRAW_WEIGHT_BLENDED_STANDARD },
			{ "weight blended token list", DRAW_WEIGHT_BLENDED_TOKEN_LIST }
		};

		mTweakBar->addPadding();

		/* draw mode : DRAW_STANDART, DRAW_TOKEN_LIST */
		mTweakBar->addEnum("Draw Mode:", drawMode, enumVals, TWEAKENUM_ARRAYSIZE(enumVals));

		/* weighted blended oit parameters */
		mTweakBar->addValue("Opacity:", oit->getOpacity(), 0.0f, 1.0f);
		mTweakBar->addValue("Weight Parameter:", oit->getWeightParameter(), 0.1f, 1.0f);

		mTweakBar->syncValues();
	}
}
void ParticleUpsampling::initUI(void)
{
    if (mTweakBar)
    {
        mTweakBar->addPadding();
        mTweakBar->addValue("renderShadows", m_sceneRenderer->getParticleParams()->renderShadows);
        mTweakBar->addValue("drawModel", m_sceneRenderer->getSceneParams()->drawModel);
        mTweakBar->addValue("useDepthPrepass", m_sceneRenderer->getSceneParams()->useDepthPrepass);

        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> shadowSliceModes[] = {
            {"16",  16},
            {"32",  32},
            {"64",  64}
        };
        mTweakBar->addEnum("shadowSlices", m_sceneRenderer->getParticleParams()->numSlices, shadowSliceModes, TWEAKENUM_ARRAYSIZE(shadowSliceModes));

        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> particleDownsampleModes[] = {
            {"Full-Res",    1},
            {"Half-Res",    2},
            {"Quarter-Res", 4}
        };
        mTweakBar->addEnum("particleDownsample", m_sceneRenderer->getSceneFBOParams()->particleDownsample, particleDownsampleModes, TWEAKENUM_ARRAYSIZE(particleDownsampleModes), REACT_UPDATE_SCREEN_BUFFERS);

        NvTweakEnum<uint32_t> lightBufferSizeModes[] = {
            {"64x64",   64},
            {"128x128",  128},
            {"256x256",  256}
        };
        mTweakBar->addEnum("lightBufferSize", m_sceneRenderer->getSceneFBOParams()->lightBufferSize, lightBufferSizeModes, TWEAKENUM_ARRAYSIZE(lightBufferSizeModes), REACT_UPDATE_LIGHT_BUFFERS);
    }
}
void ParticleUpsampling::initUI(void)
{
    if (mTweakBar)
    {
        NvTweakVarBase *var;

        var = mTweakBar->addValue("Shadow Render", m_sceneRenderer->getParticleParams()->renderShadows);
        addTweakKeyBind(var, NvKey::K_S);
        addTweakButtonBind(var, NvGamepad::BUTTON_X);
        var = mTweakBar->addValue("Model Render", m_sceneRenderer->getSceneParams()->drawModel);
        addTweakKeyBind(var, NvKey::K_M);
        addTweakButtonBind(var, NvGamepad::BUTTON_X);
        var = mTweakBar->addValue("Use Depth Prepass", m_sceneRenderer->getSceneParams()->useDepthPrepass);
        addTweakKeyBind(var, NvKey::K_U);

        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> shadowSliceModes[] = {
            {"16",  16},
            {"32",  32},
            {"64",  64}
        };
        var = mTweakBar->addEnum("Num Shadow Slices", m_sceneRenderer->getParticleParams()->numSlices, shadowSliceModes, TWEAKENUM_ARRAYSIZE(shadowSliceModes));
        addTweakKeyBind(var, NvKey::K_N);

        mTweakBar->addPadding();
        NvTweakEnum<uint32_t> particleDownsampleModes[] = {
            {"Full-Res",    1},
            {"Half-Res",    2},
            {"Quarter-Res", 4}
        };
        var = mTweakBar->addEnum("Particle Downsample Mode", m_sceneRenderer->getSceneFBOParams()->particleDownsample, particleDownsampleModes, TWEAKENUM_ARRAYSIZE(particleDownsampleModes), REACT_UPDATE_SCREEN_BUFFERS);
        addTweakKeyBind(var, NvKey::K_P);
        addTweakButtonBind(var, NvGamepad::BUTTON_RIGHT_SHOULDER);

        NvTweakEnum<uint32_t> lightBufferSizeModes[] = {
            {"64x64",   64},
            {"128x128",  128},
            {"256x256",  256}
        };
        var = mTweakBar->addEnum("Light Buffer Size", m_sceneRenderer->getSceneFBOParams()->lightBufferSize, lightBufferSizeModes, TWEAKENUM_ARRAYSIZE(lightBufferSizeModes), REACT_UPDATE_LIGHT_BUFFERS);
        addTweakKeyBind(var, NvKey::K_L);
    }
}