// Retrieve specified pixel shader //----------------------------------------------------------------------------- CPUTResult CPUTAssetLibraryDX11::GetPixelShader( const cString &name, ID3D11Device *pD3dDevice, const cString &shaderMain, const cString &shaderProfile, CPUTPixelShaderDX11 **ppPixelShader, bool nameIsFullPathAndFilename ) { CPUTResult result = CPUT_SUCCESS; cString finalName; if( name.at(0) == '$' ) { finalName = name; } else { // Resolve name to absolute path CPUTOSServices *pServices = CPUTOSServices::GetOSServices(); pServices->ResolveAbsolutePathAndFilename( nameIsFullPathAndFilename? name : (mShaderDirectoryName + name), &finalName); } // see if the shader is already in the library void *pShader = FindPixelShader(finalName + shaderMain + shaderProfile, true); if(NULL!=pShader) { *ppPixelShader = (CPUTPixelShaderDX11*) pShader; (*ppPixelShader)->AddRef(); return result; } *ppPixelShader = CPUTPixelShaderDX11::CreatePixelShader( finalName, pD3dDevice, shaderMain, shaderProfile ); return result; }