Skip to content

Commit c2114a2

Browse files
Remove utilities function SetMatrixCS, SetMatrixArrayCS, SetVectorArrayCS and replace by correct API call
1 parent b12c242 commit c2114a2

5 files changed

Lines changed: 33 additions & 108 deletions

File tree

Assets/ScriptableRenderPipeline/Fptl/FptlLighting.cs

Lines changed: 13 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -596,9 +596,9 @@ void DoTiledDeferredLighting(Camera camera, ScriptableRenderContext loop, int nu
596596
var invProjscr = projscr.inverse;
597597

598598
cmd.SetComputeIntParam(deferredComputeShader, "g_iNrVisibLights", numLights);
599-
SetMatrixCS(cmd, deferredComputeShader, "g_mScrProjection", projscr);
600-
SetMatrixCS(cmd, deferredComputeShader, "g_mInvScrProjection", invProjscr);
601-
SetMatrixCS(cmd, deferredComputeShader, "g_mViewToWorld", camera.cameraToWorldMatrix);
599+
cmd.SetComputeMatrixParam(deferredComputeShader, "g_mScrProjection", projscr);
600+
cmd.SetComputeMatrixParam(deferredComputeShader, "g_mInvScrProjection", invProjscr);
601+
cmd.SetComputeMatrixParam(deferredComputeShader, "g_mViewToWorld", camera.cameraToWorldMatrix);
602602

603603

604604
if (bUseClusteredForDeferred)
@@ -616,8 +616,8 @@ void DoTiledDeferredLighting(Camera camera, ScriptableRenderContext loop, int nu
616616
cmd.SetComputeBufferParam(deferredComputeShader, kernel, "g_dirLightData", s_DirLightList);
617617
cmd.SetComputeTextureParam(deferredComputeShader, kernel, "uavOutput", new RenderTargetIdentifier(s_CameraTarget));
618618

619-
SetMatrixArrayCS(cmd, deferredComputeShader, "g_matWorldToShadow", m_MatWorldToShadow);
620-
SetVectorArrayCS(cmd, deferredComputeShader, "g_vDirShadowSplitSpheres", m_DirShadowSplitSpheres);
619+
cmd.SetComputeMatrixArrayParam(deferredComputeShader, "g_matWorldToShadow", m_MatWorldToShadow);
620+
cmd.SetComputeVectorArrayParam(deferredComputeShader, "g_vDirShadowSplitSpheres", m_DirShadowSplitSpheres);
621621
cmd.SetComputeVectorParam(deferredComputeShader, "g_vShadow3x3PCFTerms0", m_Shadow3X3PCFTerms[0]);
622622
cmd.SetComputeVectorParam(deferredComputeShader, "g_vShadow3x3PCFTerms1", m_Shadow3X3PCFTerms[1]);
623623
cmd.SetComputeVectorParam(deferredComputeShader, "g_vShadow3x3PCFTerms2", m_Shadow3X3PCFTerms[2]);
@@ -639,42 +639,6 @@ void DoTiledDeferredLighting(Camera camera, ScriptableRenderContext loop, int nu
639639
CommandBufferPool.Release(cmd);
640640
}
641641

642-
private static void SetMatrixCS(CommandBuffer cmd, ComputeShader shadercs, string name, Matrix4x4 mat)
643-
{
644-
var data = new float[16];
645-
646-
for (int c = 0; c < 4; c++)
647-
for (int r = 0; r < 4; r++)
648-
data[4 * c + r] = mat[r, c];
649-
650-
cmd.SetComputeFloatParams(shadercs, name, data);
651-
}
652-
653-
private static void SetMatrixArrayCS(CommandBuffer cmd, ComputeShader shadercs, string name, Matrix4x4[] matArray)
654-
{
655-
int numMatrices = matArray.Length;
656-
var data = new float[numMatrices * 16];
657-
658-
for (int n = 0; n < numMatrices; n++)
659-
for (int c = 0; c < 4; c++)
660-
for (int r = 0; r < 4; r++)
661-
data[16 * n + 4 * c + r] = matArray[n][r, c];
662-
663-
cmd.SetComputeFloatParams(shadercs, name, data);
664-
}
665-
666-
private static void SetVectorArrayCS(CommandBuffer cmd, ComputeShader shadercs, string name, Vector4[] vecArray)
667-
{
668-
int numVectors = vecArray.Length;
669-
var data = new float[numVectors * 4];
670-
671-
for (int n = 0; n < numVectors; n++)
672-
for (int i = 0; i < 4; i++)
673-
data[4 * n + i] = vecArray[n][i];
674-
675-
cmd.SetComputeFloatParams(shadercs, name, data);
676-
}
677-
678642
static Matrix4x4 GetFlipMatrix()
679643
{
680644
Matrix4x4 flip = Matrix4x4.identity;
@@ -1282,8 +1246,8 @@ void VoxelLightListGeneration(CommandBuffer cmd, Camera camera, int numLights, M
12821246
cmd.DispatchCompute(buildPerVoxelLightListShader, s_ClearVoxelAtomicKernel, 1, 1, 1);
12831247

12841248
cmd.SetComputeIntParam(buildPerVoxelLightListShader, "g_iNrVisibLights", numLights);
1285-
SetMatrixCS(cmd, buildPerVoxelLightListShader, "g_mScrProjection", projscr);
1286-
SetMatrixCS(cmd, buildPerVoxelLightListShader, "g_mInvScrProjection", invProjscr);
1249+
cmd.SetComputeMatrixParam(buildPerVoxelLightListShader, "g_mScrProjection", projscr);
1250+
cmd.SetComputeMatrixParam(buildPerVoxelLightListShader, "g_mInvScrProjection", invProjscr);
12871251

12881252
cmd.SetComputeIntParam(buildPerVoxelLightListShader, "g_iLog2NumClusters", k_Log2NumClusters);
12891253

@@ -1345,8 +1309,8 @@ void BuildPerTileLightLists(Camera camera, ScriptableRenderContext loop, int num
13451309
var invProjh = projh.inverse;
13461310

13471311
cmd.SetComputeIntParam(buildScreenAABBShader, "g_iNrVisibLights", numLights);
1348-
SetMatrixCS(cmd, buildScreenAABBShader, "g_mProjection", projh);
1349-
SetMatrixCS(cmd, buildScreenAABBShader, "g_mInvProjection", invProjh);
1312+
cmd.SetComputeMatrixParam(buildScreenAABBShader, "g_mProjection", projh);
1313+
cmd.SetComputeMatrixParam(buildScreenAABBShader, "g_mInvProjection", invProjh);
13501314
cmd.SetComputeBufferParam(buildScreenAABBShader, s_GenAABBKernel, "g_vBoundsBuffer", s_AABBBoundsBuffer);
13511315
cmd.DispatchCompute(buildScreenAABBShader, s_GenAABBKernel, (numLights + 7) / 8, 1, 1);
13521316
}
@@ -1356,8 +1320,8 @@ void BuildPerTileLightLists(Camera camera, ScriptableRenderContext loop, int num
13561320
{
13571321
cmd.SetComputeIntParams(buildPerBigTileLightListShader, "g_viDimensions", new int[2] { w, h });
13581322
cmd.SetComputeIntParam(buildPerBigTileLightListShader, "g_iNrVisibLights", numLights);
1359-
SetMatrixCS(cmd, buildPerBigTileLightListShader, "g_mScrProjection", projscr);
1360-
SetMatrixCS(cmd, buildPerBigTileLightListShader, "g_mInvScrProjection", invProjscr);
1323+
cmd.SetComputeMatrixParam(buildPerBigTileLightListShader, "g_mScrProjection", projscr);
1324+
cmd.SetComputeMatrixParam(buildPerBigTileLightListShader, "g_mInvScrProjection", invProjscr);
13611325
cmd.SetComputeFloatParam(buildPerBigTileLightListShader, "g_fNearPlane", camera.nearClipPlane);
13621326
cmd.SetComputeFloatParam(buildPerBigTileLightListShader, "g_fFarPlane", camera.farClipPlane);
13631327
cmd.SetComputeBufferParam(buildPerBigTileLightListShader, s_GenListPerBigTileKernel, "g_vLightList", s_BigTileLightList);
@@ -1368,8 +1332,8 @@ void BuildPerTileLightLists(Camera camera, ScriptableRenderContext loop, int num
13681332
{
13691333
cmd.SetComputeIntParams(buildPerTileLightListShader, "g_viDimensions", new int[2] { w, h });
13701334
cmd.SetComputeIntParam(buildPerTileLightListShader, "g_iNrVisibLights", numLights);
1371-
SetMatrixCS(cmd, buildPerTileLightListShader, "g_mScrProjection", projscr);
1372-
SetMatrixCS(cmd, buildPerTileLightListShader, "g_mInvScrProjection", invProjscr);
1335+
cmd.SetComputeMatrixParam(buildPerTileLightListShader, "g_mScrProjection", projscr);
1336+
cmd.SetComputeMatrixParam(buildPerTileLightListShader, "g_mInvScrProjection", invProjscr);
13731337
cmd.SetComputeTextureParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_depth_tex", new RenderTargetIdentifier(s_CameraDepthTexture));
13741338
cmd.SetComputeBufferParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_vLightList", s_LightList);
13751339
if (enableBigTilePrepass) cmd.SetComputeBufferParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_vBigTileLightList", s_BigTileLightList);

Assets/ScriptableRenderPipeline/HDRenderPipeline/HDRenderPipeline.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,15 @@ public void OverrideGlobalParams(Material material)
160160

161161
public void SetupComputeShader(ComputeShader cs, CommandBuffer cmd)
162162
{
163-
Utilities.SetMatrixCS(cmd, cs, "_ViewMatrix", viewMatrix);
164-
Utilities.SetMatrixCS(cmd, cs, "_InvViewMatrix", viewMatrix.inverse);
165-
Utilities.SetMatrixCS(cmd, cs, "_ProjMatrix", projMatrix);
166-
Utilities.SetMatrixCS(cmd, cs, "_InvProjMatrix", projMatrix.inverse);
167-
Utilities.SetMatrixCS(cmd, cs, "_ViewProjMatrix", viewProjMatrix);
168-
Utilities.SetMatrixCS(cmd, cs, "_InvViewProjMatrix", viewProjMatrix.inverse);
169-
cmd.SetComputeVectorParam( cs, "_InvProjParam", invProjParam);
170-
cmd.SetComputeVectorParam( cs, "_ScreenSize", screenSize);
171-
Utilities.SetMatrixCS(cmd, cs, "_PrevViewProjMatrix", prevViewProjMatrix);
163+
cmd.SetComputeMatrixParam(cs, "_ViewMatrix", viewMatrix);
164+
cmd.SetComputeMatrixParam(cs, "_InvViewMatrix", viewMatrix.inverse);
165+
cmd.SetComputeMatrixParam(cs, "_ProjMatrix", projMatrix);
166+
cmd.SetComputeMatrixParam(cs, "_InvProjMatrix", projMatrix.inverse);
167+
cmd.SetComputeMatrixParam(cs, "_ViewProjMatrix", viewProjMatrix);
168+
cmd.SetComputeMatrixParam(cs, "_InvViewProjMatrix", viewProjMatrix.inverse);
169+
cmd.SetComputeVectorParam(cs, "_InvProjParam", invProjParam);
170+
cmd.SetComputeVectorParam(cs, "_ScreenSize", screenSize);
171+
cmd.SetComputeMatrixParam(cs, "_PrevViewProjMatrix", prevViewProjMatrix);
172172
}
173173
}
174174

Assets/ScriptableRenderPipeline/HDRenderPipeline/Lighting/TilePass/TilePass.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,8 +1512,8 @@ void VoxelLightListGeneration(CommandBuffer cmd, Camera camera, Matrix4x4 projsc
15121512

15131513
cmd.SetComputeIntParam(buildPerVoxelLightListShader, "_EnvLightIndexShift", m_lightList.lights.Count);
15141514
cmd.SetComputeIntParam(buildPerVoxelLightListShader, "g_iNrVisibLights", m_lightCount);
1515-
Utilities.SetMatrixCS(cmd, buildPerVoxelLightListShader, "g_mScrProjection", projscr);
1516-
Utilities.SetMatrixCS(cmd, buildPerVoxelLightListShader, "g_mInvScrProjection", invProjscr);
1515+
cmd.SetComputeMatrixParam(buildPerVoxelLightListShader, "g_mScrProjection", projscr);
1516+
cmd.SetComputeMatrixParam(buildPerVoxelLightListShader, "g_mInvScrProjection", invProjscr);
15171517

15181518
cmd.SetComputeIntParam(buildPerVoxelLightListShader, "g_iLog2NumClusters", k_Log2NumClusters);
15191519

@@ -1586,8 +1586,8 @@ public void BuildGPULightLists(Camera camera, CommandBuffer cmd, RenderTargetIde
15861586
cmd.SetComputeIntParam(buildScreenAABBShader, "g_iNrVisibLights", m_lightCount);
15871587
cmd.SetComputeBufferParam(buildScreenAABBShader, s_GenAABBKernel, "g_data", s_ConvexBoundsBuffer);
15881588

1589-
Utilities.SetMatrixCS(cmd, buildScreenAABBShader, "g_mProjection", projh);
1590-
Utilities.SetMatrixCS(cmd, buildScreenAABBShader, "g_mInvProjection", invProjh);
1589+
cmd.SetComputeMatrixParam(buildScreenAABBShader, "g_mProjection", projh);
1590+
cmd.SetComputeMatrixParam(buildScreenAABBShader, "g_mInvProjection", invProjh);
15911591
cmd.SetComputeBufferParam(buildScreenAABBShader, s_GenAABBKernel, "g_vBoundsBuffer", s_AABBBoundsBuffer);
15921592
cmd.DispatchCompute(buildScreenAABBShader, s_GenAABBKernel, (m_lightCount + 7) / 8, 1, 1);
15931593
}
@@ -1598,8 +1598,8 @@ public void BuildGPULightLists(Camera camera, CommandBuffer cmd, RenderTargetIde
15981598
cmd.SetComputeIntParams(buildPerBigTileLightListShader, "g_viDimensions", w, h);
15991599
cmd.SetComputeIntParam(buildPerBigTileLightListShader, "_EnvLightIndexShift", m_lightList.lights.Count);
16001600
cmd.SetComputeIntParam(buildPerBigTileLightListShader, "g_iNrVisibLights", m_lightCount);
1601-
Utilities.SetMatrixCS(cmd, buildPerBigTileLightListShader, "g_mScrProjection", projscr);
1602-
Utilities.SetMatrixCS(cmd, buildPerBigTileLightListShader, "g_mInvScrProjection", invProjscr);
1601+
cmd.SetComputeMatrixParam(buildPerBigTileLightListShader, "g_mScrProjection", projscr);
1602+
cmd.SetComputeMatrixParam(buildPerBigTileLightListShader, "g_mInvScrProjection", invProjscr);
16031603
cmd.SetComputeFloatParam(buildPerBigTileLightListShader, "g_fNearPlane", camera.nearClipPlane);
16041604
cmd.SetComputeFloatParam(buildPerBigTileLightListShader, "g_fFarPlane", camera.farClipPlane);
16051605
cmd.SetComputeBufferParam(buildPerBigTileLightListShader, s_GenListPerBigTileKernel, "g_vLightList", s_BigTileLightList);
@@ -1624,8 +1624,8 @@ public void BuildGPULightLists(Camera camera, CommandBuffer cmd, RenderTargetIde
16241624
cmd.SetComputeBufferParam(buildPerTileLightListShader, s_GenListPerTileKernel, "_LightVolumeData", s_LightVolumeDataBuffer);
16251625
cmd.SetComputeBufferParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_data", s_ConvexBoundsBuffer);
16261626

1627-
Utilities.SetMatrixCS(cmd, buildPerTileLightListShader, "g_mScrProjection", projscr);
1628-
Utilities.SetMatrixCS(cmd, buildPerTileLightListShader, "g_mInvScrProjection", invProjscr);
1627+
cmd.SetComputeMatrixParam(buildPerTileLightListShader, "g_mScrProjection", projscr);
1628+
cmd.SetComputeMatrixParam(buildPerTileLightListShader, "g_mInvScrProjection", invProjscr);
16291629
cmd.SetComputeTextureParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_depth_tex", cameraDepthBufferRT);
16301630
cmd.SetComputeBufferParam(buildPerTileLightListShader, s_GenListPerTileKernel, "g_vLightList", s_LightList);
16311631
if (m_TileSettings.enableBigTilePrepass)
@@ -2036,7 +2036,7 @@ public void RenderDeferredLighting( HDCamera hdCamera, CommandBuffer cmd,
20362036

20372037
hdCamera.SetupComputeShader(shadeOpaqueShader, cmd);
20382038

2039-
Utilities.SetMatrixCS(cmd, shadeOpaqueShader, "g_mInvScrProjection", Shader.GetGlobalMatrix("g_mInvScrProjection"));
2039+
cmd.SetComputeMatrixParam(shadeOpaqueShader, "g_mInvScrProjection", Shader.GetGlobalMatrix("g_mInvScrProjection"));
20402040
cmd.SetComputeIntParam(shadeOpaqueShader, "_UseTileLightList", Shader.GetGlobalInt("_UseTileLightList"));
20412041

20422042
cmd.SetComputeVectorParam(shadeOpaqueShader, "_Time", Shader.GetGlobalVector("_Time"));

Assets/ScriptableRenderPipeline/HDRenderPipeline/Utilities.cs

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ public ProfilingSample(string _name, CommandBuffer _cmd)
191191
name = _name;
192192
cmd.BeginSample(name);
193193
}
194-
194+
195195
public void Dispose()
196196
{
197197
Dispose(true);
@@ -222,45 +222,6 @@ public static Matrix4x4 GetViewProjectionMatrix(Matrix4x4 worldToViewMatrix, Mat
222222
return gpuVP;
223223
}
224224

225-
// TEMP: These functions should be implemented C++ side, for now do it in C#
226-
static List<float> m_FloatListdata = new List<float>();
227-
public static void SetMatrixCS(CommandBuffer cmd, ComputeShader shadercs, string name, Matrix4x4 mat)
228-
{
229-
m_FloatListdata.Clear();
230-
231-
for (int c = 0; c < 4; c++)
232-
for (int r = 0; r < 4; r++)
233-
m_FloatListdata.Add(mat[r, c]);
234-
235-
cmd.SetComputeFloatParams(shadercs, name, m_FloatListdata);
236-
}
237-
238-
public static void SetMatrixArrayCS(CommandBuffer cmd, ComputeShader shadercs, string name, Matrix4x4[] matArray)
239-
{
240-
int numMatrices = matArray.Length;
241-
242-
m_FloatListdata.Clear();
243-
244-
for (int n = 0; n < numMatrices; n++)
245-
for (int c = 0; c < 4; c++)
246-
for (int r = 0; r < 4; r++)
247-
m_FloatListdata.Add(matArray[n][r, c]);
248-
249-
cmd.SetComputeFloatParams(shadercs, name, m_FloatListdata);
250-
}
251-
252-
public static void SetVectorArrayCS(CommandBuffer cmd, ComputeShader shadercs, string name, Vector4[] vecArray)
253-
{
254-
int numVectors = vecArray.Length;
255-
m_FloatListdata.Clear();
256-
257-
for (int n = 0; n < numVectors; n++)
258-
for (int i = 0; i < 4; i++)
259-
m_FloatListdata.Add(vecArray[n][i]);
260-
261-
cmd.SetComputeFloatParams(shadercs, name, m_FloatListdata);
262-
}
263-
264225
public static void SetKeyword(Material m, string keyword, bool state)
265226
{
266227
if (state)

ProjectSettings/ProjectVersion.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
m_EditorVersion: 2017.2.0b1
1+
m_EditorVersion: 2017.3.0a1

0 commit comments

Comments
 (0)