Skip to content

Commit 052eaa8

Browse files
committed
Merge branch 'develop' of https://github.com/OpenSourceUnityPackage/InfluenceMap into feature/influence_portion
# Conflicts: # Samples~/Demo/Scripts/GameManager.cs
2 parents 52d8b07 + 267d9a9 commit 052eaa8

14 files changed

+155
-85
lines changed

Runtime/MapMerger.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using UnityEngine;
2+
using UnityEngine.Rendering;
3+
4+
namespace InfluenceMapPackage
5+
{
6+
public class MapMerger
7+
{
8+
private ComputeShader m_shader;
9+
private static readonly int s_shaderPropertyMap1 = Shader.PropertyToID("_Map1");
10+
private static readonly int s_shaderPropertyMap2 = Shader.PropertyToID("_Map2");
11+
private static readonly int s_shaderPropertyOutput = Shader.PropertyToID("_TextureOut");
12+
private int s_kernelIndex = 0;
13+
14+
public MapMerger(ComputeShader shader)
15+
{
16+
SetShader(shader);
17+
}
18+
19+
public void SetShader(ComputeShader shader)
20+
{
21+
m_shader = shader;
22+
s_kernelIndex = m_shader.FindKernel("main");
23+
}
24+
25+
public RenderTexture Process(RenderTexture map1, RenderTexture map2)
26+
{
27+
if (map1.width != map1.height || map2.width != map2.height || map1.width != map2.height)
28+
{
29+
Debug.LogError("Maps need to be uniforms");
30+
return null;
31+
}
32+
33+
int resol = map1.width;
34+
RenderTexture rst = RenderTexture.GetTemporary(resol, resol, 0, map1.format);
35+
rst.enableRandomWrite = true;
36+
rst.filterMode = FilterMode.Point;
37+
rst.Create();
38+
39+
CommandBuffer commandBuffer = new CommandBuffer();
40+
commandBuffer.name = "Compute shader";
41+
commandBuffer.SetComputeTextureParam(m_shader, s_kernelIndex, s_shaderPropertyMap1, map1);
42+
commandBuffer.SetComputeTextureParam(m_shader, s_kernelIndex, s_shaderPropertyMap2, map2);
43+
commandBuffer.SetComputeTextureParam(m_shader, s_kernelIndex, s_shaderPropertyOutput, rst);
44+
commandBuffer.DispatchCompute(m_shader, s_kernelIndex, resol / 8, resol / 8, 1);
45+
Graphics.ExecuteCommandBuffer(commandBuffer);
46+
47+
return rst;
48+
}
49+
}
50+
}

Runtime/MapMerger.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/Shader/InfluenceMapCS.compute.meta

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/Shader/Operation.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Texture2D<float> _Map1;
2+
Texture2D<float> _Map2;
3+
4+
RWTexture2D<float> _TextureOut;
5+
6+
#pragma kernel main
7+
8+
[numthreads(8,8,1)]
9+
void main (uint2 id : SV_DispatchThreadID)
10+
{
11+
_TextureOut[id.xy] = min(_Map1[id.xy] + _Map2[id.xy], 1.f);
12+
}

Samples~/Demo/InfluenceMapMerger.shader.meta renamed to Runtime/Shader/Operation/InfluenceMapAdd.compute.meta

Lines changed: 3 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Texture2D<float> _Map1;
2+
Texture2D<float> _Map2;
3+
4+
RWTexture2D<float> _TextureOut;
5+
6+
#pragma kernel main
7+
8+
[numthreads(8,8,1)]
9+
void main (uint2 id : SV_DispatchThreadID)
10+
{
11+
// Commune
12+
_TextureOut[id.xy] = min((_Map1[id.xy] > 0.f) && (_Map2[id.xy] > 0.f), 1.f);
13+
}

Runtime/Shader/Operation/InfluenceMapAnd.compute.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Texture2D<float> _Map1;
2+
Texture2D<float> _Map2;
3+
4+
RWTexture2D<float> _TextureOut;
5+
6+
#pragma kernel main
7+
8+
[numthreads(8,8,1)]
9+
void main (uint2 id : SV_DispatchThreadID)
10+
{
11+
// Combine
12+
_TextureOut[id.xy] = min((_Map1[id.xy] > 0.f) || (_Map2[id.xy] > 0.f), 1.f);
13+
}

Runtime/Shader/Operation/InfluenceMapOr.compute.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)