/**************************************************** * DESERIALIZATION HELPERS * ****************************************************/ static uint8_t deserialize(uint8_t* buffer, float& value){ deserialize_float(buffer, value); }
AMD_AOFX_DLL_API AOFX_RETURN_CODE AOFX_DebugDeserialize(AOFX_Desc& desc, const char* params, ID3D11Texture2D** ppT2D[], ID3D11ShaderResourceView** ppSRV[]) { AMD_OUTPUT_DEBUG_STRING("CALL: " AMD_FUNCTION_NAME " \n"); HRESULT hr = S_OK; std::string strParams(params); std::wstring wstrParams(strParams.begin(), strParams.end()); if (ppT2D != NULL && ppSRV != NULL && ppT2D[0] != NULL && ppSRV[0] != NULL) { std::wstring depth = wstrParams + L".depth.dds"; hr = DirectX::CreateDDSTextureFromFile(desc.m_pDevice, depth.c_str(), (ID3D11Resource**)ppT2D[0], ppSRV[0]); desc.m_pDepthSRV = *ppSRV[0]; } if (ppT2D != NULL && ppSRV != NULL && ppT2D[1] != NULL && ppSRV[1] != NULL) { std::wstring normal = wstrParams + L".normal.dds"; hr = DirectX::CreateDDSTextureFromFile(desc.m_pDevice, normal.c_str(), (ID3D11Resource**)ppT2D[1], ppSRV[1]); desc.m_pNormalSRV = *ppSRV[1]; } strParams += ".txt"; FILE * file = fopen(strParams.c_str(), "rt"); if (file != NULL) { char readStr[1024]; uint multiResLayerCount = 0; deserialize_uint(file, readStr, (uint *)&multiResLayerCount); assert(multiResLayerCount == desc.m_MultiResLayerCount); for (uint i = 0; i < desc.m_MultiResLayerCount; i++) { deserialize_uint(file, readStr, (uint *)&desc.m_LayerProcess[i]); deserialize_uint(file, readStr, (uint *)&desc.m_BilateralBlurRadius[i]); deserialize_uint(file, readStr, (uint *)&desc.m_SampleCount[i]); deserialize_uint(file, readStr, (uint *)&desc.m_NormalOption[i]); deserialize_uint(file, readStr, (uint *)&desc.m_TapType[i]); deserialize_float(file, readStr, (float *)&desc.m_MultiResLayerScale[i]); deserialize_float(file, readStr, (float *)&desc.m_PowIntensity[i]); deserialize_float(file, readStr, (float *)&desc.m_RejectRadius[i]); deserialize_float(file, readStr, (float *)&desc.m_AcceptRadius[i]); deserialize_float(file, readStr, (float *)&desc.m_RecipFadeOutDist[i]); deserialize_float(file, readStr, (float *)&desc.m_LinearIntensity[i]); deserialize_float(file, readStr, (float *)&desc.m_NormalScale[i]); deserialize_float(file, readStr, (float *)&desc.m_ViewDistanceDiscard[i]); deserialize_float(file, readStr, (float *)&desc.m_ViewDistanceFade[i]); deserialize_float(file, readStr, (float *)&desc.m_DepthUpsampleThreshold[i]); } deserialize_uint(file, readStr, (uint *)&desc.m_Implementation); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View.r[3]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection.r[3]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection.r[3]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View_Inv.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View_Inv.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View_Inv.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_View_Inv.r[3]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection_Inv.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection_Inv.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection_Inv.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Projection_Inv.r[3]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection_Inv.r[0]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection_Inv.r[1]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection_Inv.r[2]); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_ViewProjection_Inv.r[3]); deserialize_float3(file, readStr, (float *)&desc.m_Camera.m_Position); deserialize_float3(file, readStr, (float *)&desc.m_Camera.m_Direction); deserialize_float3(file, readStr, (float *)&desc.m_Camera.m_Right); deserialize_float3(file, readStr, (float *)&desc.m_Camera.m_Up); deserialize_float(file, readStr, (float *)&desc.m_Camera.m_Aspect); deserialize_float(file, readStr, (float *)&desc.m_Camera.m_FarPlane); deserialize_float(file, readStr, (float *)&desc.m_Camera.m_NearPlane); deserialize_float(file, readStr, (float *)&desc.m_Camera.m_Fov); deserialize_float4(file, readStr, (float *)&desc.m_Camera.m_Color); deserialize_uint2(file, readStr, (uint*)&desc.m_InputSize); deserialize_uint(file, readStr, (uint *)&desc.m_OutputChannelsFlag); fclose(file); } return AOFX_RETURN_CODE_SUCCESS; }