void Effect::SetParam(const string& name, const Vector4f& data) { auto it = vectorVars.find(name); _ASSERT(it != vectorVars.end()); ID3DX11EffectVectorVariable* vectorVar = it->second; DXCall(vectorVar->SetFloatVector((const F32*) &data)); }
void Effect::SetParam(const string& name, const Vector3f& data) { auto it = vectorVars.find(name); _ASSERT(it != vectorVars.end()); ID3DX11EffectVectorVariable* vectorVar = it->second; Vector4f vec4(data.x, data.y, data.z, 0.0f); DXCall(vectorVar->SetFloatVector((F32*) &vec4)); }
void DX11Shader::setVector(const char* strName, float* pFloat) { ID3DX11EffectVectorVariable* pVector; pVector = m_pEffect->pEffect->GetVariableByName(strName)->AsVector(); if (pVector->IsValid()) pVector->SetFloatVector(pFloat); else EventManager::Instance().postMessage("Unknown variable: %s in shader: %s", strName, m_pEffect->strName); }
void App::OnSizeTerrain() { if (!device) return; if (!g_pTerrainEffect) return; HRESULT hr; ID3D11Texture2D* pBackBuffer; hr = swapChain->GetBuffer( 0, __uuidof( *pBackBuffer ), ( LPVOID* )&pBackBuffer ); DXGI_SURFACE_DESC pBBufferSurfaceDesc; ZeroMemory( &pBBufferSurfaceDesc, sizeof( DXGI_SURFACE_DESC ) ); if( SUCCEEDED( hr ) ) { D3D11_TEXTURE2D_DESC TexDesc; pBackBuffer->GetDesc( &TexDesc ); pBBufferSurfaceDesc.Width = ( UINT )TexDesc.Width; pBBufferSurfaceDesc.Height = ( UINT )TexDesc.Height; pBBufferSurfaceDesc.Format = TexDesc.Format; pBBufferSurfaceDesc.SampleDesc = TexDesc.SampleDesc; SAFE_RELEASE( pBackBuffer ); } ID3DX11EffectVectorVariable* pScreenSize = g_pTerrainEffect->GetVariableByName("g_screenSize")->AsVector(); if (pScreenSize) { D3DXVECTOR2 v((float) pBBufferSurfaceDesc.Width, (float) pBBufferSurfaceDesc.Height); pScreenSize->SetFloatVector(v); } g_Skybox.OnD3D11ResizedSwapChain(&pBBufferSurfaceDesc); unsigned int n = 1; context->RSGetViewports(&n, &g_BackBufferVP); g_ScreenSize = D3DXVECTOR2((float) pBBufferSurfaceDesc.Width, (float) pBBufferSurfaceDesc.Height); float aspectRatio = g_ScreenSize.x / g_ScreenSize.y; ActiveCam_->setFOV(RAD2DEG(noMath::PI / 3)); ActiveCam_->setNear(CLIP_NEAR); ActiveCam_->setFar(CLIP_FAR); ActiveCam_->SetAspect(aspectRatio); ActiveCam_->ComputeProjection(); }