Advertisement
Guest User

VaOcean Plugin Update to UE4.3

a guest
Jul 8th, 2014
902
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 25.43 KB | None | 0 0
  1. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Classes/VaOceanRadixFFT.h" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Classes/VaOceanRadixFFT.h"
  2. index 244fa36..15f304d 100644
  3. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Classes/VaOceanRadixFFT.h"
  4. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Classes/VaOceanRadixFFT.h"
  5. @@ -54,7 +54,8 @@ struct FRadixPlan512
  6.  void RadixCreatePlan(FRadixPlan512* Plan, uint32 Slices);
  7.  void RadixDestroyPlan(FRadixPlan512* Plan);
  8.  
  9. -void RadixCompute( FRadixPlan512* Plan,
  10. +void RadixCompute( FRHICommandListImmediate & RHICmdList,
  11. +                   FRadixPlan512* Plan,
  12.                     FUnorderedAccessViewRHIRef pUAV_Dst,
  13.                     FShaderResourceViewRHIRef pSRV_Dst,
  14.                     FShaderResourceViewRHIRef pSRV_Src);
  15. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Classes/VaOceanShaders.h" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Classes/VaOceanShaders.h"
  16. index 0a5eda6..9b6fb41 100644
  17. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Classes/VaOceanShaders.h"
  18. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Classes/VaOceanShaders.h"
  19. @@ -84,6 +84,7 @@ public:
  20.     }
  21.  
  22.     void SetParameters(
  23. +       FRHICommandList & RHICmdList,
  24.         uint32 ParamActualDim,
  25.         uint32 ParamInWidth,
  26.         uint32 ParamOutWidth,
  27. @@ -94,15 +95,16 @@ public:
  28.     {
  29.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  30.  
  31. -       SetShaderValue(ComputeShaderRHI, ActualDim, ParamActualDim);
  32. -       SetShaderValue(ComputeShaderRHI, InWidth, ParamInWidth);
  33. -       SetShaderValue(ComputeShaderRHI, OutWidth, ParamOutWidth);
  34. -       SetShaderValue(ComputeShaderRHI, OutHeight, ParamOutHeight);
  35. -       SetShaderValue(ComputeShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  36. -       SetShaderValue(ComputeShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  37. +       SetShaderValue(RHICmdList, ComputeShaderRHI, ActualDim, ParamActualDim);
  38. +       SetShaderValue(RHICmdList, ComputeShaderRHI, InWidth, ParamInWidth);
  39. +       SetShaderValue(RHICmdList, ComputeShaderRHI, OutWidth, ParamOutWidth);
  40. +       SetShaderValue(RHICmdList, ComputeShaderRHI, OutHeight, ParamOutHeight);
  41. +       SetShaderValue(RHICmdList, ComputeShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  42. +       SetShaderValue(RHICmdList, ComputeShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  43.     }
  44.  
  45.     void SetParameters(
  46. +       FRHICommandList & RHICmdList,
  47.         const FUpdateSpectrumUniformBufferRef& UniformBuffer,
  48.         FShaderResourceViewRHIRef ParamInputH0,
  49.         FShaderResourceViewRHIRef ParamInputOmega
  50. @@ -110,36 +112,36 @@ public:
  51.     {
  52.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  53.  
  54. -       SetUniformBufferParameter(ComputeShaderRHI, GetUniformBufferParameter<FUpdateSpectrumUniformParameters>(), UniformBuffer);
  55. +       SetUniformBufferParameter(RHICmdList, ComputeShaderRHI, GetUniformBufferParameter<FUpdateSpectrumUniformParameters>(), UniformBuffer);
  56.  
  57. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, InputH0.GetBaseIndex(), ParamInputH0);
  58. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, InputOmega.GetBaseIndex(), ParamInputOmega);
  59. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, InputH0.GetBaseIndex(), ParamInputH0);
  60. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, InputOmega.GetBaseIndex(), ParamInputOmega);
  61.     }
  62.  
  63. -   void UnsetParameters()
  64. +   void UnsetParameters(FRHICommandList & RHICmdList)
  65.     {
  66.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  67.         FShaderResourceViewRHIParamRef NullSRV = FShaderResourceViewRHIParamRef();
  68.  
  69. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, InputH0.GetBaseIndex(), NullSRV);
  70. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, InputOmega.GetBaseIndex(), NullSRV);
  71. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, InputH0.GetBaseIndex(), NullSRV);
  72. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, InputOmega.GetBaseIndex(), NullSRV);
  73.     }
  74.  
  75. -   void SetOutput(FUnorderedAccessViewRHIParamRef ParamOutputHtRW)
  76. +   void SetOutput(FRHICommandList & RHICmdList, FUnorderedAccessViewRHIParamRef ParamOutputHtRW)
  77.     {
  78.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  79.         if (OutputHtRW.IsBound())
  80.         {
  81. -           RHISetUAVParameter(ComputeShaderRHI, OutputHtRW.GetBaseIndex(), ParamOutputHtRW);
  82. +           RHICmdList.SetUAVParameter(ComputeShaderRHI, OutputHtRW.GetBaseIndex(), ParamOutputHtRW);
  83.         }
  84.     }
  85.  
  86. -   void UnbindBuffers()
  87. +   void UnbindBuffers(FRHICommandList & RHICmdList)
  88.     {
  89.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  90.         if (OutputHtRW.IsBound())
  91.         {
  92. -           RHISetUAVParameter(ComputeShaderRHI, OutputHtRW.GetBaseIndex(), FUnorderedAccessViewRHIParamRef());
  93. +           RHICmdList.SetUAVParameter(ComputeShaderRHI, OutputHtRW.GetBaseIndex(), FUnorderedAccessViewRHIParamRef());
  94.         }
  95.     }
  96.  
  97. @@ -206,27 +208,27 @@ public:
  98.     {
  99.     }
  100.  
  101. -   void SetParameters(const FRadixFFTUniformBufferRef& UniformBuffer)
  102. +   void SetParameters(FRHICommandList & RHICmdList, const FRadixFFTUniformBufferRef& UniformBuffer)
  103.     {
  104.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  105.  
  106. -       SetUniformBufferParameter(ComputeShaderRHI, GetUniformBufferParameter<FRadixFFTUniformParameters>(), UniformBuffer);
  107. +       SetUniformBufferParameter(RHICmdList, ComputeShaderRHI, GetUniformBufferParameter<FRadixFFTUniformParameters>(), UniformBuffer);
  108.     }
  109.  
  110. -   void SetParameters(FShaderResourceViewRHIRef ParamSrcData, FUnorderedAccessViewRHIRef ParamDstData)
  111. +   void SetParameters(FRHICommandList & RHICmdList, FShaderResourceViewRHIRef ParamSrcData, FUnorderedAccessViewRHIRef ParamDstData)
  112.     {
  113.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  114.  
  115. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, SrcData.GetBaseIndex(), ParamSrcData);
  116. -       RHISetUAVParameter(ComputeShaderRHI, DstData.GetBaseIndex(), ParamDstData);
  117. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, SrcData.GetBaseIndex(), ParamSrcData);
  118. +       RHICmdList.SetUAVParameter(ComputeShaderRHI, DstData.GetBaseIndex(), ParamDstData);
  119.     }
  120.  
  121. -   void UnsetParameters()
  122. +   void UnsetParameters(FRHICommandList & RHICmdList)
  123.     {
  124.         FComputeShaderRHIParamRef ComputeShaderRHI = GetComputeShader();
  125.  
  126. -       RHISetShaderResourceViewParameter(ComputeShaderRHI, SrcData.GetBaseIndex(), FShaderResourceViewRHIParamRef());
  127. -       RHISetUAVParameter(ComputeShaderRHI, DstData.GetBaseIndex(), FUnorderedAccessViewRHIParamRef());
  128. +       RHICmdList.SetShaderResourceViewParameter(ComputeShaderRHI, SrcData.GetBaseIndex(), FShaderResourceViewRHIParamRef());
  129. +       RHICmdList.SetUAVParameter(ComputeShaderRHI, DstData.GetBaseIndex(), FUnorderedAccessViewRHIParamRef());
  130.     }
  131.  
  132.     virtual bool Serialize(FArchive& Ar)
  133. @@ -285,8 +287,8 @@ public:
  134.     virtual void InitRHI()
  135.     {
  136.         FVertexDeclarationElementList Elements;
  137. -       Elements.Add(FVertexElement(0, STRUCT_OFFSET(FQuadVertex, Position), VET_Float4, 0));
  138. -       Elements.Add(FVertexElement(0, STRUCT_OFFSET(FQuadVertex, UV), VET_Float2, 1));
  139. +       Elements.Add(FVertexElement(0, STRUCT_OFFSET(FQuadVertex, Position), VET_Float4, 0, sizeof(FQuadVertex)));
  140. +       Elements.Add(FVertexElement(0, STRUCT_OFFSET(FQuadVertex, UV), VET_Float2, 1, sizeof(FQuadVertex)));
  141.         VertexDeclarationRHI = RHICreateVertexDeclaration(Elements);
  142.     }
  143.  
  144. @@ -371,6 +373,7 @@ public:
  145.     }
  146.  
  147.     void SetParameters(
  148. +       FRHICommandList & RHICmdList,
  149.         uint32 ParamActualDim,
  150.         uint32 ParamInWidth,
  151.         uint32 ParamOutWidth,
  152. @@ -381,31 +384,32 @@ public:
  153.     {
  154.         FPixelShaderRHIParamRef PixelShaderRHI = GetPixelShader();
  155.  
  156. -       SetShaderValue(PixelShaderRHI, ActualDim, ParamActualDim);
  157. -       SetShaderValue(PixelShaderRHI, InWidth, ParamInWidth);
  158. -       SetShaderValue(PixelShaderRHI, OutWidth, ParamOutWidth);
  159. -       SetShaderValue(PixelShaderRHI, OutHeight, ParamOutHeight);
  160. -       SetShaderValue(PixelShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  161. -       SetShaderValue(PixelShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  162. +       SetShaderValue(RHICmdList, PixelShaderRHI, ActualDim, ParamActualDim);
  163. +       SetShaderValue(RHICmdList, PixelShaderRHI, InWidth, ParamInWidth);
  164. +       SetShaderValue(RHICmdList, PixelShaderRHI, OutWidth, ParamOutWidth);
  165. +       SetShaderValue(RHICmdList, PixelShaderRHI, OutHeight, ParamOutHeight);
  166. +       SetShaderValue(RHICmdList, PixelShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  167. +       SetShaderValue(RHICmdList, PixelShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  168.     }
  169.  
  170.     void SetParameters(
  171. +       FRHICommandList & RHICmdList,
  172.         const FUpdateDisplacementUniformBufferRef& UniformBuffer,
  173.         FShaderResourceViewRHIRef ParamInputDxyz
  174.         )
  175.     {
  176.         FPixelShaderRHIParamRef PixelShaderRHI = GetPixelShader();
  177.  
  178. -       SetUniformBufferParameter(PixelShaderRHI, GetUniformBufferParameter<FUpdateDisplacementUniformParameters>(), UniformBuffer);
  179. +       SetUniformBufferParameter(RHICmdList, PixelShaderRHI, GetUniformBufferParameter<FUpdateDisplacementUniformParameters>(), UniformBuffer);
  180.  
  181. -       RHISetShaderResourceViewParameter(PixelShaderRHI, InputDxyz.GetBaseIndex(), ParamInputDxyz);
  182. +       RHICmdList.SetShaderResourceViewParameter(PixelShaderRHI, InputDxyz.GetBaseIndex(), ParamInputDxyz);
  183.     }
  184.  
  185. -   void UnsetParameters()
  186. +   void UnsetParameters(FRHICommandList & RHICmdList)
  187.     {
  188.         FPixelShaderRHIParamRef PixelShaderRHI = GetPixelShader();
  189.  
  190. -       RHISetShaderResourceViewParameter(PixelShaderRHI, InputDxyz.GetBaseIndex(), FShaderResourceViewRHIParamRef());
  191. +       RHICmdList.SetShaderResourceViewParameter(PixelShaderRHI, InputDxyz.GetBaseIndex(), FShaderResourceViewRHIParamRef());
  192.     }
  193.  
  194.     virtual bool Serialize(FArchive& Ar)
  195. @@ -479,6 +483,7 @@ public:
  196.     }
  197.  
  198.     void SetParameters(
  199. +       FRHICommandList & RHICmdList,
  200.         uint32 ParamActualDim,
  201.         uint32 ParamInWidth,
  202.         uint32 ParamOutWidth,
  203. @@ -489,28 +494,29 @@ public:
  204.     {
  205.         FPixelShaderRHIParamRef PixelShaderRHI = GetPixelShader();
  206.  
  207. -       SetShaderValue(PixelShaderRHI, ActualDim, ParamActualDim);
  208. -       SetShaderValue(PixelShaderRHI, InWidth, ParamInWidth);
  209. -       SetShaderValue(PixelShaderRHI, OutWidth, ParamOutWidth);
  210. -       SetShaderValue(PixelShaderRHI, OutHeight, ParamOutHeight);
  211. -       SetShaderValue(PixelShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  212. -       SetShaderValue(PixelShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  213. +       SetShaderValue(RHICmdList, PixelShaderRHI, ActualDim, ParamActualDim);
  214. +       SetShaderValue(RHICmdList, PixelShaderRHI, InWidth, ParamInWidth);
  215. +       SetShaderValue(RHICmdList, PixelShaderRHI, OutWidth, ParamOutWidth);
  216. +       SetShaderValue(RHICmdList, PixelShaderRHI, OutHeight, ParamOutHeight);
  217. +       SetShaderValue(RHICmdList, PixelShaderRHI, DtxAddressOffset, ParamDtxAddressOffset);
  218. +       SetShaderValue(RHICmdList, PixelShaderRHI, DtyAddressOffset, ParamDtyAddressOffset);
  219.     }
  220.  
  221.     void SetParameters(
  222. +       FRHICommandList & RHICmdList,
  223.         const FUpdateDisplacementUniformBufferRef& UniformBuffer,
  224.         FTextureRHIParamRef DisplacementMapRHI
  225.         )
  226.     {
  227.         FPixelShaderRHIParamRef PixelShaderRHI = GetPixelShader();
  228.  
  229. -       SetUniformBufferParameter(PixelShaderRHI, GetUniformBufferParameter<FUpdateDisplacementUniformParameters>(), UniformBuffer);
  230. +       SetUniformBufferParameter(RHICmdList, PixelShaderRHI, GetUniformBufferParameter<FUpdateDisplacementUniformParameters>(), UniformBuffer);
  231.  
  232.         FSamplerStateRHIParamRef SamplerStateLinear = TStaticSamplerState<SF_Bilinear, AM_Clamp, AM_Clamp, AM_Clamp>::GetRHI();
  233. -       SetTextureParameter(PixelShaderRHI, DisplacementMap, DisplacementMapSampler, SamplerStateLinear, DisplacementMapRHI);
  234. +       SetTextureParameter(RHICmdList, PixelShaderRHI, DisplacementMap, DisplacementMapSampler, SamplerStateLinear, DisplacementMapRHI);
  235.     }
  236.  
  237. -   void UnsetParameters() {}
  238. +   void UnsetParameters(FRHICommandList & RHICmdList) {}
  239.  
  240.     virtual bool Serialize(FArchive& Ar)
  241.     {
  242. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanPlugin.cpp" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanPlugin.cpp"
  243. index cae1ab2..1f3c42e 100644
  244. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanPlugin.cpp"
  245. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanPlugin.cpp"
  246. @@ -1,7 +1,6 @@
  247.  // Copyright 2014 Vladimir Alyamkin. All Rights Reserved.
  248.  
  249.  #include "VaOceanPluginPrivatePCH.h"
  250. -#include "VaOceanPlugin.generated.inl"
  251.  
  252.  class FVaOceanPlugin : public IVaOceanPlugin
  253.  {
  254. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanPluginPrivatePCH.h" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanPluginPrivatePCH.h"
  255. index dae2a93..abcf58f 100644
  256. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanPluginPrivatePCH.h"
  257. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanPluginPrivatePCH.h"
  258. @@ -6,7 +6,9 @@
  259.  #include "Engine.h"
  260.  #include "UniformBuffer.h"
  261.  #include "ShaderParameters.h"
  262. +#include "ShaderParameterUtils.h"
  263.  #include "GlobalShader.h"
  264. +#include "RHIStaticStates.h"
  265.  
  266.  // You should place include statements to your module's private header files here.  You only need to
  267.  // add includes for headers that are used in most of your module's source files though.
  268. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanRadixFFT.cpp" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanRadixFFT.cpp"
  269. index a7beb6e..9c43032 100644
  270. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanRadixFFT.cpp"
  271. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanRadixFFT.cpp"
  272. @@ -2,7 +2,9 @@
  273.  
  274.  #include "VaOceanPluginPrivatePCH.h"
  275.  
  276. -void Radix008A(FRadixPlan512* Plan,
  277. +void Radix008A(
  278. +   FRHICommandListImmediate & RHICmdList,
  279. +   FRadixPlan512* Plan,
  280.     uint32 ParamSet,
  281.     FUnorderedAccessViewRHIRef pUAV_Dst,
  282.     FShaderResourceViewRHIRef pSRV_Src,
  283. @@ -22,31 +24,31 @@ void Radix008A(FRadixPlan512* Plan,
  284.     Parameters.PhaseBase = Plan->PerFrame[ParamSet].PhaseBase;
  285.  
  286.     FRadixFFTUniformBufferRef UniformBuffer =
  287. -       FRadixFFTUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleUse);
  288. +       FRadixFFTUniformBufferRef::CreateUniformBufferImmediate(Parameters, EUniformBufferUsage::UniformBuffer_SingleFrame);
  289.  
  290.     if (istride > 1)
  291.     {
  292.         TShaderMapRef<FRadix008A_CS> Radix008A_CS(GetGlobalShaderMap());
  293. -       RHISetComputeShader(Radix008A_CS->GetComputeShader());
  294. +       RHICmdList.SetComputeShader(Radix008A_CS->GetComputeShader());
  295.  
  296. -       Radix008A_CS->SetParameters(UniformBuffer);
  297. -       Radix008A_CS->SetParameters(pSRV_Src, pUAV_Dst);
  298. +       Radix008A_CS->SetParameters(RHICmdList, UniformBuffer);
  299. +       Radix008A_CS->SetParameters(RHICmdList, pSRV_Src, pUAV_Dst);
  300.  
  301. -       RHIDispatchComputeShader(grid, 1, 1);
  302. +       RHICmdList.DispatchComputeShader(grid, 1, 1);
  303.  
  304. -       Radix008A_CS->UnsetParameters();
  305. +       Radix008A_CS->UnsetParameters(RHICmdList);
  306.     }
  307.     else
  308.     {
  309.         TShaderMapRef<FRadix008A_CS2> Radix008A_CS2(GetGlobalShaderMap());
  310. -       RHISetComputeShader(Radix008A_CS2->GetComputeShader());
  311. +       RHICmdList.SetComputeShader(Radix008A_CS2->GetComputeShader());
  312.  
  313. -       Radix008A_CS2->SetParameters(UniformBuffer);
  314. -       Radix008A_CS2->SetParameters(pSRV_Src, pUAV_Dst);
  315. +       Radix008A_CS2->SetParameters(RHICmdList, UniformBuffer);
  316. +       Radix008A_CS2->SetParameters(RHICmdList, pSRV_Src, pUAV_Dst);
  317.  
  318. -       RHIDispatchComputeShader(grid, 1, 1);
  319. +       RHICmdList.DispatchComputeShader(grid, 1, 1);
  320.  
  321. -       Radix008A_CS2->UnsetParameters();
  322. +       Radix008A_CS2->UnsetParameters(RHICmdList);
  323.     }
  324.  }
  325.  
  326. @@ -96,8 +98,11 @@ void RadixCreatePlan(FRadixPlan512* Plan, uint32 Slices)
  327.    
  328.     // Temp buffers
  329.     uint32 BytesPerElement = sizeof(float) * 2;
  330. -   uint32 NumElements = (512 * Plan->Slices) * 512;
  331. -   Plan->pBuffer_Tmp = RHICreateStructuredBuffer(BytesPerElement, BytesPerElement * NumElements, NULL, (BUF_UnorderedAccess | BUF_ShaderResource));
  332. +   uint32 NumElements = (512 * Plan->Slices) * 512;
  333. +   FRHIResourceCreateInfo info;
  334. +   info.BulkData = nullptr;
  335. +   info.ResourceArray = nullptr;
  336. +   Plan->pBuffer_Tmp = RHICreateStructuredBuffer(BytesPerElement, BytesPerElement * NumElements, (BUF_UnorderedAccess | BUF_ShaderResource), info);
  337.     Plan->pUAV_Tmp = RHICreateUnorderedAccessView(Plan->pBuffer_Tmp, false, false);
  338.     Plan->pSRV_Tmp = RHICreateShaderResourceView(Plan->pBuffer_Tmp);
  339.  }
  340. @@ -109,7 +114,9 @@ void RadixDestroyPlan(FRadixPlan512* Plan)
  341.     Plan->pSRV_Tmp.SafeRelease();
  342.  }
  343.  
  344. -void RadixCompute(FRadixPlan512* Plan,
  345. +void RadixCompute(
  346. +   FRHICommandListImmediate & RHICmdList,
  347. +   FRadixPlan512* Plan,
  348.     FUnorderedAccessViewRHIRef pUAV_Dst,
  349.     FShaderResourceViewRHIRef pSRV_Dst,
  350.     FShaderResourceViewRHIRef pSRV_Src)
  351. @@ -121,20 +128,20 @@ void RadixCompute(FRadixPlan512* Plan,
  352.     FShaderResourceViewRHIRef pSRV_Tmp = Plan->pSRV_Tmp;
  353.  
  354.     istride /= 8;
  355. -   Radix008A(Plan, 0, pUAV_Tmp, pSRV_Src, thread_count, istride);
  356. +   Radix008A(RHICmdList, Plan, 0, pUAV_Tmp, pSRV_Src, thread_count, istride);
  357.  
  358.     istride /= 8;
  359. -   Radix008A(Plan, 1, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  360. +   Radix008A(RHICmdList, Plan, 1, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  361.  
  362.     istride /= 8;
  363. -   Radix008A(Plan, 2, pUAV_Tmp, pSRV_Dst, thread_count, istride);
  364. +   Radix008A(RHICmdList, Plan, 2, pUAV_Tmp, pSRV_Dst, thread_count, istride);
  365.  
  366.     istride /= 8;
  367. -   Radix008A(Plan, 3, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  368. +   Radix008A(RHICmdList, Plan, 3, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  369.  
  370.     istride /= 8;
  371. -   Radix008A(Plan, 4, pUAV_Tmp, pSRV_Dst, thread_count, istride);
  372. +   Radix008A(RHICmdList, Plan, 4, pUAV_Tmp, pSRV_Dst, thread_count, istride);
  373.  
  374.     istride /= 8;
  375. -   Radix008A(Plan, 5, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  376. +   Radix008A(RHICmdList, Plan, 5, pUAV_Dst, pSRV_Tmp, thread_count, istride);
  377.  }
  378. diff --git "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanSimulatorComponent.cpp" "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanSimulatorComponent.cpp"
  379. index dc4a17d..555243f 100644
  380. --- "a/C:\\Users\\paul\\Desktop\\VaOceanPlugin/Private/VaOceanSimulatorComponent.cpp"
  381. +++ "b/.\\Plugins\\VaOcean\\Source\\VaOceanPlugin/Private/VaOceanSimulatorComponent.cpp"
  382. @@ -189,7 +189,9 @@ void UVaOceanSimulatorComponent::InitHeightMap(FOceanData& Params, TResourceArra
  383.  void UVaOceanSimulatorComponent::CreateBufferAndUAV(FResourceArrayInterface* Data, uint32 byte_width, uint32 byte_stride,
  384.     FStructuredBufferRHIRef* ppBuffer, FUnorderedAccessViewRHIRef* ppUAV, FShaderResourceViewRHIRef* ppSRV)
  385.  {
  386. -   *ppBuffer = RHICreateStructuredBuffer(byte_stride, Data->GetResourceDataSize(), Data, (BUF_UnorderedAccess | BUF_ShaderResource));
  387. +   FRHIResourceCreateInfo info;
  388. +   info.ResourceArray = Data;
  389. +   *ppBuffer = RHICreateStructuredBuffer(byte_stride, Data->GetResourceDataSize(), (BUF_UnorderedAccess | BUF_ShaderResource), info);
  390.     *ppUAV = RHICreateUnorderedAccessView(*ppBuffer, false, false);
  391.     *ppSRV = RHICreateShaderResourceView(*ppBuffer);
  392.  }
  393. @@ -245,24 +247,24 @@ void UVaOceanSimulatorComponent::UpdateDisplacementMap(float WorldTime)
  394.             Parameters.Time = PerFrameParams.g_Time;
  395.  
  396.             FUpdateSpectrumUniformBufferRef UniformBuffer =
  397. -               FUpdateSpectrumUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleUse);
  398. +               FUpdateSpectrumUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleFrame);
  399.  
  400.             TShaderMapRef<FUpdateSpectrumCS> UpdateSpectrumCS(GetGlobalShaderMap());
  401. -           RHISetComputeShader(UpdateSpectrumCS->GetComputeShader());
  402. +           RHICmdList.SetComputeShader(UpdateSpectrumCS->GetComputeShader());
  403.  
  404. -           UpdateSpectrumCS->SetParameters(ImmutableParams.g_ActualDim,
  405. +           UpdateSpectrumCS->SetParameters(RHICmdList, ImmutableParams.g_ActualDim,
  406.                 ImmutableParams.g_InWidth, ImmutableParams.g_OutWidth, ImmutableParams.g_OutHeight,
  407.                 ImmutableParams.g_DtxAddressOffset, ImmutableParams.g_DtyAddressOffset);
  408.  
  409. -           UpdateSpectrumCS->SetParameters(UniformBuffer, PerFrameParams.m_pSRV_H0, PerFrameParams.m_pSRV_Omega);
  410. -           UpdateSpectrumCS->SetOutput(PerFrameParams.m_pUAV_Ht);
  411. +           UpdateSpectrumCS->SetParameters(RHICmdList, UniformBuffer, PerFrameParams.m_pSRV_H0, PerFrameParams.m_pSRV_Omega);
  412. +           UpdateSpectrumCS->SetOutput(RHICmdList, PerFrameParams.m_pUAV_Ht);
  413.  
  414.             uint32 group_count_x = (ImmutableParams.g_ActualDim + BLOCK_SIZE_X - 1) / BLOCK_SIZE_X;
  415.             uint32 group_count_y = (ImmutableParams.g_ActualDim + BLOCK_SIZE_Y - 1) / BLOCK_SIZE_Y;
  416. -           RHIDispatchComputeShader(group_count_x, group_count_y, 1);
  417. +           RHICmdList.DispatchComputeShader(group_count_x, group_count_y, 1);
  418.  
  419. -           UpdateSpectrumCS->UnsetParameters();
  420. -           UpdateSpectrumCS->UnbindBuffers();
  421. +           UpdateSpectrumCS->UnsetParameters(RHICmdList);
  422. +           UpdateSpectrumCS->UnbindBuffers(RHICmdList);
  423.         });
  424.  
  425.     // ------------------------------------ Perform FFT -------------------------------------------
  426. @@ -273,7 +275,7 @@ void UVaOceanSimulatorComponent::UpdateDisplacementMap(float WorldTime)
  427.         FShaderResourceViewRHIRef, m_pSRV_Dxyz, m_pSRV_Dxyz,
  428.         FShaderResourceViewRHIRef, m_pSRV_Ht, m_pSRV_Ht,
  429.         {
  430. -           RadixCompute(pPlan, m_pUAV_Dxyz, m_pSRV_Dxyz, m_pSRV_Ht);
  431. +           RadixCompute(RHICmdList, pPlan, m_pUAV_Dxyz, m_pSRV_Dxyz, m_pSRV_Ht);
  432.         });
  433.  
  434.     // --------------------------------- Wrap Dx, Dy and Dz ---------------------------------------
  435. @@ -296,26 +298,26 @@ void UVaOceanSimulatorComponent::UpdateDisplacementMap(float WorldTime)
  436.             Parameters.GridLen = PerFrameParams.g_GridLen;
  437.  
  438.             FUpdateDisplacementUniformBufferRef UniformBuffer =
  439. -               FUpdateDisplacementUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleUse);
  440. +               FUpdateDisplacementUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleFrame);
  441.  
  442. -           RHISetRenderTarget(TextureRenderTarget->GetRenderTargetTexture(), NULL);
  443. +           SetRenderTarget(RHICmdList, TextureRenderTarget->GetRenderTargetTexture(), NULL);
  444.             //RHIClear(true, FLinearColor::Black, false, 0.f, false, 0, FIntRect());
  445.  
  446.             TShaderMapRef<FQuadVS> QuadVS(GetGlobalShaderMap());
  447.             TShaderMapRef<FUpdateDisplacementPS> UpdateDisplacementPS(GetGlobalShaderMap());
  448.  
  449.             static FGlobalBoundShaderState UpdateDisplacementBoundShaderState;
  450. -           SetGlobalBoundShaderState(UpdateDisplacementBoundShaderState, GQuadVertexDeclaration.VertexDeclarationRHI, *QuadVS, *UpdateDisplacementPS);
  451. +           SetGlobalBoundShaderState(RHICmdList, UpdateDisplacementBoundShaderState, GQuadVertexDeclaration.VertexDeclarationRHI, *QuadVS, *UpdateDisplacementPS);
  452.  
  453. -           UpdateDisplacementPS->SetParameters(ImmutableParams.g_ActualDim,
  454. +           UpdateDisplacementPS->SetParameters(RHICmdList, ImmutableParams.g_ActualDim,
  455.                 ImmutableParams.g_InWidth, ImmutableParams.g_OutWidth, ImmutableParams.g_OutHeight,
  456.                 ImmutableParams.g_DtxAddressOffset, ImmutableParams.g_DtyAddressOffset);
  457.  
  458. -           UpdateDisplacementPS->SetParameters(UniformBuffer, PerFrameParams.g_InputDxyz);
  459. +           UpdateDisplacementPS->SetParameters(RHICmdList, UniformBuffer, PerFrameParams.g_InputDxyz);
  460.  
  461. -           RHIDrawPrimitiveUP(PT_TriangleStrip, 2, PerFrameParams.m_pQuadVB, sizeof(PerFrameParams.m_pQuadVB[0]));
  462. +           DrawPrimitiveUP(RHICmdList, PT_TriangleStrip, 2, PerFrameParams.m_pQuadVB, sizeof(PerFrameParams.m_pQuadVB[0]));
  463.  
  464. -           UpdateDisplacementPS->UnsetParameters();
  465. +           UpdateDisplacementPS->UnsetParameters(RHICmdList);
  466.         });
  467.  
  468.     // ----------------------------------- Generate Normal ----------------------------------------
  469. @@ -329,7 +331,7 @@ void UVaOceanSimulatorComponent::UpdateDisplacementMap(float WorldTime)
  470.     ENQUEUE_UNIQUE_RENDER_COMMAND_FOURPARAMETER(
  471.         GenGradientFoldingPSCommand,
  472.         FTextureRenderTargetResource*, TextureRenderTarget, GradientRenderTarget,
  473. -       FUpdateSpectrumCSImmutable, ImmutableParams, UpdateSpectrumCSImmutableParams,       // We're using the same params as for CS
  474. +       FUpdateSpectrumCSImmutable, ImmutableParams, UpdateSpectrumCSImmutableParams,
  475.         FGenGradientFoldingPSPerFrame, PerFrameParams, GenGradientFoldingPSPerFrameParams,
  476.         FTextureRenderTargetResource*, DisplacementRenderTarget, DisplacementRenderTarget,
  477.         {
  478. @@ -338,26 +340,26 @@ void UVaOceanSimulatorComponent::UpdateDisplacementMap(float WorldTime)
  479.             Parameters.GridLen = PerFrameParams.g_GridLen;
  480.  
  481.             FUpdateDisplacementUniformBufferRef UniformBuffer =
  482. -               FUpdateDisplacementUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleUse);
  483. +               FUpdateDisplacementUniformBufferRef::CreateUniformBufferImmediate(Parameters, UniformBuffer_SingleFrame);
  484.  
  485. -           RHISetRenderTarget(TextureRenderTarget->GetRenderTargetTexture(), NULL);
  486. +           SetRenderTarget(RHICmdList, TextureRenderTarget->GetRenderTargetTexture(), NULL);
  487.             //RHIClear(true, FLinearColor::Black, false, 0.f, false, 0, FIntRect());
  488.  
  489.             TShaderMapRef<FQuadVS> QuadVS(GetGlobalShaderMap());
  490.             TShaderMapRef<FGenGradientFoldingPS> GenGradientFoldingPS(GetGlobalShaderMap());
  491.  
  492.             static FGlobalBoundShaderState UpdateDisplacementBoundShaderState;
  493. -           SetGlobalBoundShaderState(UpdateDisplacementBoundShaderState, GQuadVertexDeclaration.VertexDeclarationRHI, *QuadVS, *GenGradientFoldingPS);
  494. +           SetGlobalBoundShaderState(RHICmdList, UpdateDisplacementBoundShaderState, GQuadVertexDeclaration.VertexDeclarationRHI, *QuadVS, *GenGradientFoldingPS);
  495.  
  496. -           GenGradientFoldingPS->SetParameters(ImmutableParams.g_ActualDim,
  497. +           GenGradientFoldingPS->SetParameters(RHICmdList, ImmutableParams.g_ActualDim,
  498.                 ImmutableParams.g_InWidth, ImmutableParams.g_OutWidth, ImmutableParams.g_OutHeight,
  499.                 ImmutableParams.g_DtxAddressOffset, ImmutableParams.g_DtyAddressOffset);
  500.  
  501. -           GenGradientFoldingPS->SetParameters(UniformBuffer, DisplacementRenderTarget->TextureRHI);
  502. +           GenGradientFoldingPS->SetParameters(RHICmdList, UniformBuffer, DisplacementRenderTarget->TextureRHI);
  503.  
  504. -           RHIDrawPrimitiveUP(PT_TriangleStrip, 2, PerFrameParams.m_pQuadVB, sizeof(PerFrameParams.m_pQuadVB[0]));
  505. +           DrawPrimitiveUP(RHICmdList, PT_TriangleStrip, 2, PerFrameParams.m_pQuadVB, sizeof(PerFrameParams.m_pQuadVB[0]));
  506.  
  507. -           GenGradientFoldingPS->UnsetParameters();
  508. +           GenGradientFoldingPS->UnsetParameters(RHICmdList);
  509.     });
  510.    
  511.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement