Esempio n. 1
0
 void serialize_float2(FILE * file, const char * name, float * v)
 {
   fprintf(file, "#%s = %.10f %.10f; \n", name, v[0], v[1]);
   serialize_uint2(file, name, (uint *) v);
 }
AMD_AOFX_DLL_API AOFX_RETURN_CODE AOFX_DebugSerialize(AOFX_Desc& desc, const char* params)
{
    AMD_OUTPUT_DEBUG_STRING("CALL: " AMD_FUNCTION_NAME " \n");

    HRESULT hr = S_OK;
    ID3D11Texture2D *pDepthT2D = NULL, *pNormalT2D = NULL;

    std::string strParams(params);
    std::wstring wstrParams(strParams.begin(), strParams.end());

    if (desc.m_pDepthSRV)
    {
        std::wstring depth = wstrParams + L".depth.dds";
        desc.m_pDepthSRV->GetResource((ID3D11Resource**)&pDepthT2D);
        hr = DirectX::SaveDDSTextureToFile(desc.m_pDeviceContext, pDepthT2D, depth.c_str());
        AMD_SAFE_RELEASE(pDepthT2D);
        if (hr != S_OK) 
        {
            AMD_OUTPUT_DEBUG_STRING("AMD_AO DebugSerialize Error : Can't save Depth Texture\n");
            return AOFX_RETURN_CODE_FAIL;
        }
    }
    if (desc.m_pNormalSRV)
    {
        std::wstring normal = wstrParams + L".normal.dds";
        desc.m_pNormalSRV->GetResource((ID3D11Resource**)&pNormalT2D);
        hr = DirectX::SaveDDSTextureToFile(desc.m_pDeviceContext, pNormalT2D, normal.c_str());
        AMD_SAFE_RELEASE(pNormalT2D);
        if (hr != S_OK) 
        {
            AMD_OUTPUT_DEBUG_STRING("AMD_AO DebugSerialize Error : Can't save Normal Texture\n");
            return AOFX_RETURN_CODE_FAIL;
        }
    }

    strParams += ".txt";
    FILE * file = fopen(strParams.c_str(), "wt");
    if (file != NULL)
    {
        serialize_uint(file, "desc.m_MultiResLayerCount", (uint *)&desc.m_MultiResLayerCount);

        for (uint i = 0; i < desc.m_MultiResLayerCount; i++)
        {
            serialize_uint(file, "desc.m_LayerProcess", (uint *)&desc.m_LayerProcess[i]);
            serialize_uint(file, "desc.m_BilateralBlurRadius", (uint *)&desc.m_BilateralBlurRadius[i]);
            serialize_uint(file, "desc.m_SampleCount", (uint *)&desc.m_SampleCount[i]);
            serialize_uint(file, "desc.m_NormalOption", (uint *)&desc.m_NormalOption[i]);
            serialize_uint(file, "desc.m_TapType", (uint *)&desc.m_TapType[i]);
            serialize_float(file, "desc.m_MultiResLayerScale", (float *)&desc.m_MultiResLayerScale[i]);
            serialize_float(file, "desc.m_PowIntensity", (float *)&desc.m_PowIntensity[i]);
            serialize_float(file, "desc.m_RejectRadius", (float *)&desc.m_RejectRadius[i]);
            serialize_float(file, "desc.m_AcceptRadius", (float *)&desc.m_AcceptRadius[i]);
            serialize_float(file, "desc.m_RecipFadeOutDist", (float *)&desc.m_RecipFadeOutDist[i]);
            serialize_float(file, "desc.m_LinearIntensity", (float *)&desc.m_LinearIntensity[i]);
            serialize_float(file, "desc.m_NormalScale", (float *)&desc.m_NormalScale[i]);
            serialize_float(file, "desc.m_ViewDistanceDiscard", (float *)&desc.m_ViewDistanceDiscard[i]);
            serialize_float(file, "desc.m_ViewDistanceFade", (float *)&desc.m_ViewDistanceFade[i]);
            serialize_float(file, "desc.m_DepthUpsampleThreshold", (float *)&desc.m_DepthUpsampleThreshold[i]);
        }

        serialize_uint(file, "desc.m_Implementation", (uint *)&desc.m_Implementation);

        serialize_float4(file, "desc.m_Camera.m_View.r[0]", (float *)&desc.m_Camera.m_View.r[0]);
        serialize_float4(file, "desc.m_Camera.m_View.r[1]", (float *)&desc.m_Camera.m_View.r[1]);
        serialize_float4(file, "desc.m_Camera.m_View.r[2]", (float *)&desc.m_Camera.m_View.r[2]);
        serialize_float4(file, "desc.m_Camera.m_View.r[3]", (float *)&desc.m_Camera.m_View.r[3]);

        serialize_float4(file, "desc.m_Camera.m_Projection.r[0]", (float *)&desc.m_Camera.m_Projection.r[0]);
        serialize_float4(file, "desc.m_Camera.m_Projection.r[1]", (float *)&desc.m_Camera.m_Projection.r[1]);
        serialize_float4(file, "desc.m_Camera.m_Projection.r[2]", (float *)&desc.m_Camera.m_Projection.r[2]);
        serialize_float4(file, "desc.m_Camera.m_Projection.r[3]", (float *)&desc.m_Camera.m_Projection.r[3]);

        serialize_float4(file, "desc.m_Camera.m_ViewProjection.r[0]", (float *)&desc.m_Camera.m_ViewProjection.r[0]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection.r[1]", (float *)&desc.m_Camera.m_ViewProjection.r[1]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection.r[2]", (float *)&desc.m_Camera.m_ViewProjection.r[2]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection.r[3]", (float *)&desc.m_Camera.m_ViewProjection.r[3]);

        serialize_float4(file, "desc.m_Camera.m_View_Inv.r[0]", (float *)&desc.m_Camera.m_View_Inv.r[0]);
        serialize_float4(file, "desc.m_Camera.m_View_Inv.r[1]", (float *)&desc.m_Camera.m_View_Inv.r[1]);
        serialize_float4(file, "desc.m_Camera.m_View_Inv.r[2]", (float *)&desc.m_Camera.m_View_Inv.r[2]);
        serialize_float4(file, "desc.m_Camera.m_View_Inv.r[3]", (float *)&desc.m_Camera.m_View_Inv.r[3]);

        serialize_float4(file, "desc.m_Camera.m_Projection_Inv.r[0]", (float *)&desc.m_Camera.m_Projection_Inv.r[0]);
        serialize_float4(file, "desc.m_Camera.m_Projection_Inv.r[1]", (float *)&desc.m_Camera.m_Projection_Inv.r[1]);
        serialize_float4(file, "desc.m_Camera.m_Projection_Inv.r[2]", (float *)&desc.m_Camera.m_Projection_Inv.r[2]);
        serialize_float4(file, "desc.m_Camera.m_Projection_Inv.r[3]", (float *)&desc.m_Camera.m_Projection_Inv.r[3]);

        serialize_float4(file, "desc.m_Camera.m_ViewProjection_Inv.r[0]", (float *)&desc.m_Camera.m_ViewProjection_Inv.r[0]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection_Inv.r[1]", (float *)&desc.m_Camera.m_ViewProjection_Inv.r[1]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection_Inv.r[2]", (float *)&desc.m_Camera.m_ViewProjection_Inv.r[2]);
        serialize_float4(file, "desc.m_Camera.m_ViewProjection_Inv.r[3]", (float *)&desc.m_Camera.m_ViewProjection_Inv.r[3]);

        serialize_float3(file, "desc.m_Camera.m_Position", (float *)&desc.m_Camera.m_Position);
        serialize_float3(file, "desc.m_Camera.m_Direction", (float *)&desc.m_Camera.m_Direction);
        serialize_float3(file, "desc.m_Camera.m_Right", (float *)&desc.m_Camera.m_Right);
        serialize_float3(file, "desc.m_Camera.m_Up", (float *)&desc.m_Camera.m_Up);

        serialize_float(file, "desc.m_Camera.m_Aspect", (float *)&desc.m_Camera.m_Aspect);
        serialize_float(file, "desc.m_Camera.m_FarPlane", (float *)&desc.m_Camera.m_FarPlane);
        serialize_float(file, "desc.m_Camera.m_NearPlane", (float *)&desc.m_Camera.m_NearPlane);
        serialize_float(file, "desc.m_Camera.m_Fov", (float *)&desc.m_Camera.m_Fov);

        serialize_float4(file, "desc.m_Camera.m_Color", (float *)&desc.m_Camera.m_Color);

        serialize_uint2(file, "desc.m_InputSize", (uint*)&desc.m_InputSize);

        serialize_uint(file, "desc.m_OutputChannelsFlag", (uint *)&desc.m_OutputChannelsFlag);

        fclose(file);
    }
    else
    {
        AMD_OUTPUT_DEBUG_STRING("AMD_AO DebugSerialize Error : Can't save AO Parameters\n");
    }

    return AOFX_RETURN_CODE_SUCCESS;
}