Skip to content

Commit 076c74b

Browse files
committed
🚧 Add Action for texture array
1 parent 08a4e46 commit 076c74b

23 files changed

+380
-28
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Runtime.InteropServices;
3+
using UnityEngine;
4+
5+
namespace ActionUnity
6+
{
7+
public class ActionUnitySampleTextureArray : ActionUnity
8+
{
9+
const string _dllSampleBasic = "SampleBasic";
10+
11+
[DllImport(_dllSampleBasic)]
12+
private static extern IntPtr createActionSampleTextureArrayBasic(IntPtr texturePtr, int width, int height, int depth);
13+
14+
/// <summary>
15+
/// create a pointer to actionSampleTextureArray object that has been created in native plugin
16+
/// </summary>
17+
/// <param name="renderTexture">render texture that will be used in interoperability</param>
18+
public ActionUnitySampleTextureArray(RenderTexture renderTexture) : base()
19+
{
20+
_actionPtr = createActionSampleTextureArrayBasic(renderTexture.GetNativeTexturePtr(), renderTexture.width, renderTexture.height, renderTexture.volumeDepth);
21+
}
22+
}
23+
24+
}

InteropUnityCUDA/Assets/Actions/ActionUnitySampleTextureArray.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.

InteropUnityCUDA/Assets/Actions/InteropHandlerSample.cs

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Runtime.InteropServices;
22
using Unity.Mathematics;
33
using UnityEngine;
4+
using UnityEngine.Rendering;
45
using UnityEngine.UI;
56
using Utilities;
67

@@ -11,18 +12,26 @@ public class InteropHandlerSample : InteropHandler
1112
{
1213
// the id which will be use in registration of action texture
1314
private const string _ActionTextureName = "sampleTexture";
15+
// the id which will be use in registration of action texture array
16+
private const string _ActionTextureArrayName = "sampleTextureArray";
1417
// the id which will be use in registration of action vertex buffer
1518
private const string _ActionVertexBufferName = "sampleVertexBuffer";
1619

17-
[SerializeField] private RawImage _rawImage;
20+
// raw image for texture
21+
[SerializeField] private RawImage _rawImageOneTexture;
22+
[SerializeField] private RawImage _rawImageTextureArray0;
23+
[SerializeField] private RawImage _rawImageTextureArray1;
1824
[SerializeField] private ParticlesDrawer _particlesDrawer;
1925

2026
[SerializeField] private int _sizeTexture = 256;
2127
[SerializeField] private int _sizeBuffer = 256;
2228

2329

2430

25-
private RenderTexture _rt;
31+
private RenderTexture _renderTexture;
32+
private RenderTexture _renderTextureArray;
33+
private RenderTexture _renderTextureForDisplay0;
34+
private RenderTexture _renderTextureForDisplay1;
2635
private ComputeBuffer _computeBuffer;
2736
private float4[] _cpuArray;
2837

@@ -31,7 +40,34 @@ public class InteropHandlerSample : InteropHandler
3140
/// </summary>
3241
private void CreateTexture()
3342
{
34-
_rt = new RenderTexture(_sizeTexture, _sizeTexture, 0
43+
_renderTexture = new RenderTexture(_sizeTexture, _sizeTexture, 0
44+
, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear)
45+
{
46+
useMipMap = false,
47+
autoGenerateMips = false,
48+
anisoLevel = 6,
49+
filterMode = FilterMode.Trilinear,
50+
wrapMode = TextureWrapMode.Clamp,
51+
enableRandomWrite = true
52+
};
53+
54+
_rawImageOneTexture.texture = _renderTexture;
55+
}
56+
57+
private void CreateTextureArray()
58+
{
59+
_renderTextureForDisplay0 = new RenderTexture(_sizeTexture, _sizeTexture, 0
60+
, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear)
61+
{
62+
useMipMap = false,
63+
autoGenerateMips = false,
64+
anisoLevel = 6,
65+
filterMode = FilterMode.Trilinear,
66+
wrapMode = TextureWrapMode.Clamp,
67+
enableRandomWrite = true
68+
};
69+
70+
_renderTextureForDisplay1 = new RenderTexture(_sizeTexture, _sizeTexture, 0
3571
, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear)
3672
{
3773
useMipMap = false,
@@ -42,8 +78,8 @@ private void CreateTexture()
4278
enableRandomWrite = true
4379
};
4480

45-
print(_rt.Create());
46-
_rawImage.texture = _rt;
81+
_rawImageOneTexture.texture = _renderTextureForDisplay0;
82+
_rawImageTextureArray1.texture = _renderTextureForDisplay1;
4783
}
4884

4985
/// <summary>
@@ -74,11 +110,15 @@ protected override void InitializeActions()
74110

75111
CreateBuffer();
76112
CreateTexture();
77-
ActionUnitySampleTexture actionUnitySampleTexture = new ActionUnitySampleTexture(_rt);
113+
CreateTextureArray();
114+
ActionUnitySampleTexture actionUnitySampleTexture = new ActionUnitySampleTexture(_renderTexture);
115+
ActionUnitySampleTextureArray actionUnitySampleTextureArray = new ActionUnitySampleTextureArray(_renderTexture);
78116
ActionUnitySampleVertexBuffer actionUnitySampleVertexBuffer = new ActionUnitySampleVertexBuffer(_computeBuffer, _sizeBuffer);
79117
RegisterActionUnity(actionUnitySampleTexture, _ActionTextureName);
80118
RegisterActionUnity(actionUnitySampleVertexBuffer, _ActionVertexBufferName);
119+
RegisterActionUnity(actionUnitySampleTextureArray, _ActionTextureArrayName);
81120
CallFunctionStartInAction(_ActionTextureName);
121+
CallFunctionStartInAction(_ActionTextureArrayName);
82122
CallFunctionStartInAction(_ActionVertexBufferName);
83123
}
84124

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
182 Bytes
Binary file not shown.
304 Bytes
Binary file not shown.

InteropUnityCUDA/Assets/Scenes/InteropSample.unity

Lines changed: 156 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,79 @@ NavMeshSettings:
123123
debug:
124124
m_Flags: 0
125125
m_NavMeshData: {fileID: 0}
126+
--- !u!1 &105578132
127+
GameObject:
128+
m_ObjectHideFlags: 0
129+
m_CorrespondingSourceObject: {fileID: 0}
130+
m_PrefabInstance: {fileID: 0}
131+
m_PrefabAsset: {fileID: 0}
132+
serializedVersion: 6
133+
m_Component:
134+
- component: {fileID: 105578133}
135+
- component: {fileID: 105578135}
136+
- component: {fileID: 105578134}
137+
m_Layer: 5
138+
m_Name: RawImageTextureArray1
139+
m_TagString: Untagged
140+
m_Icon: {fileID: 0}
141+
m_NavMeshLayer: 0
142+
m_StaticEditorFlags: 0
143+
m_IsActive: 1
144+
--- !u!224 &105578133
145+
RectTransform:
146+
m_ObjectHideFlags: 0
147+
m_CorrespondingSourceObject: {fileID: 0}
148+
m_PrefabInstance: {fileID: 0}
149+
m_PrefabAsset: {fileID: 0}
150+
m_GameObject: {fileID: 105578132}
151+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
152+
m_LocalPosition: {x: 0, y: 0, z: 0}
153+
m_LocalScale: {x: 1, y: 1, z: 1}
154+
m_ConstrainProportionsScale: 0
155+
m_Children: []
156+
m_Father: {fileID: 883164729}
157+
m_RootOrder: 2
158+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
159+
m_AnchorMin: {x: 0, y: 1}
160+
m_AnchorMax: {x: 0, y: 1}
161+
m_AnchoredPosition: {x: 108.6, y: 0}
162+
m_SizeDelta: {x: 100, y: 100}
163+
m_Pivot: {x: 0, y: 1}
164+
--- !u!114 &105578134
165+
MonoBehaviour:
166+
m_ObjectHideFlags: 0
167+
m_CorrespondingSourceObject: {fileID: 0}
168+
m_PrefabInstance: {fileID: 0}
169+
m_PrefabAsset: {fileID: 0}
170+
m_GameObject: {fileID: 105578132}
171+
m_Enabled: 1
172+
m_EditorHideFlags: 0
173+
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
174+
m_Name:
175+
m_EditorClassIdentifier:
176+
m_Material: {fileID: 0}
177+
m_Color: {r: 1, g: 1, b: 1, a: 1}
178+
m_RaycastTarget: 1
179+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
180+
m_Maskable: 1
181+
m_OnCullStateChanged:
182+
m_PersistentCalls:
183+
m_Calls: []
184+
m_Texture: {fileID: 0}
185+
m_UVRect:
186+
serializedVersion: 2
187+
x: 0
188+
y: 0
189+
width: 1
190+
height: 1
191+
--- !u!222 &105578135
192+
CanvasRenderer:
193+
m_ObjectHideFlags: 0
194+
m_CorrespondingSourceObject: {fileID: 0}
195+
m_PrefabInstance: {fileID: 0}
196+
m_PrefabAsset: {fileID: 0}
197+
m_GameObject: {fileID: 105578132}
198+
m_CullTransparentMesh: 1
126199
--- !u!1 &255879864
127200
GameObject:
128201
m_ObjectHideFlags: 0
@@ -340,6 +413,8 @@ RectTransform:
340413
m_ConstrainProportionsScale: 0
341414
m_Children:
342415
- {fileID: 1931950553}
416+
- {fileID: 1925581529}
417+
- {fileID: 105578133}
343418
m_Father: {fileID: 0}
344419
m_RootOrder: 4
345420
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -490,11 +565,12 @@ MonoBehaviour:
490565
m_Script: {fileID: 11500000, guid: 061ede0ce7c166d4c9d487d57e7e0bfc, type: 3}
491566
m_Name:
492567
m_EditorClassIdentifier:
493-
_rawImage: {fileID: 1931950554}
568+
_rawImageOneTexture: {fileID: 1931950554}
569+
_rawImageTextureArray0: {fileID: 1925581530}
570+
_rawImageTextureArray1: {fileID: 105578134}
494571
_particlesDrawer: {fileID: 942099207}
495572
_sizeTexture: 256
496573
_sizeBuffer: 256
497-
_tmpText: {fileID: 0}
498574
--- !u!1 &1263202877
499575
GameObject:
500576
m_ObjectHideFlags: 0
@@ -589,6 +665,79 @@ Transform:
589665
m_Father: {fileID: 0}
590666
m_RootOrder: 1
591667
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
668+
--- !u!1 &1925581528
669+
GameObject:
670+
m_ObjectHideFlags: 0
671+
m_CorrespondingSourceObject: {fileID: 0}
672+
m_PrefabInstance: {fileID: 0}
673+
m_PrefabAsset: {fileID: 0}
674+
serializedVersion: 6
675+
m_Component:
676+
- component: {fileID: 1925581529}
677+
- component: {fileID: 1925581531}
678+
- component: {fileID: 1925581530}
679+
m_Layer: 5
680+
m_Name: RawImageTextureArray0
681+
m_TagString: Untagged
682+
m_Icon: {fileID: 0}
683+
m_NavMeshLayer: 0
684+
m_StaticEditorFlags: 0
685+
m_IsActive: 1
686+
--- !u!224 &1925581529
687+
RectTransform:
688+
m_ObjectHideFlags: 0
689+
m_CorrespondingSourceObject: {fileID: 0}
690+
m_PrefabInstance: {fileID: 0}
691+
m_PrefabAsset: {fileID: 0}
692+
m_GameObject: {fileID: 1925581528}
693+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
694+
m_LocalPosition: {x: 0, y: 0, z: 0}
695+
m_LocalScale: {x: 1, y: 1, z: 1}
696+
m_ConstrainProportionsScale: 0
697+
m_Children: []
698+
m_Father: {fileID: 883164729}
699+
m_RootOrder: 1
700+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
701+
m_AnchorMin: {x: 0, y: 1}
702+
m_AnchorMax: {x: 0, y: 1}
703+
m_AnchoredPosition: {x: 0, y: 0}
704+
m_SizeDelta: {x: 100, y: 100}
705+
m_Pivot: {x: 0, y: 1}
706+
--- !u!114 &1925581530
707+
MonoBehaviour:
708+
m_ObjectHideFlags: 0
709+
m_CorrespondingSourceObject: {fileID: 0}
710+
m_PrefabInstance: {fileID: 0}
711+
m_PrefabAsset: {fileID: 0}
712+
m_GameObject: {fileID: 1925581528}
713+
m_Enabled: 1
714+
m_EditorHideFlags: 0
715+
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
716+
m_Name:
717+
m_EditorClassIdentifier:
718+
m_Material: {fileID: 0}
719+
m_Color: {r: 1, g: 1, b: 1, a: 1}
720+
m_RaycastTarget: 1
721+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
722+
m_Maskable: 1
723+
m_OnCullStateChanged:
724+
m_PersistentCalls:
725+
m_Calls: []
726+
m_Texture: {fileID: 0}
727+
m_UVRect:
728+
serializedVersion: 2
729+
x: 0
730+
y: 0
731+
width: 1
732+
height: 1
733+
--- !u!222 &1925581531
734+
CanvasRenderer:
735+
m_ObjectHideFlags: 0
736+
m_CorrespondingSourceObject: {fileID: 0}
737+
m_PrefabInstance: {fileID: 0}
738+
m_PrefabAsset: {fileID: 0}
739+
m_GameObject: {fileID: 1925581528}
740+
m_CullTransparentMesh: 1
592741
--- !u!1 &1931950552
593742
GameObject:
594743
m_ObjectHideFlags: 0
@@ -601,7 +750,7 @@ GameObject:
601750
- component: {fileID: 1931950555}
602751
- component: {fileID: 1931950554}
603752
m_Layer: 5
604-
m_Name: RawImage
753+
m_Name: RawImageTexture
605754
m_TagString: Untagged
606755
m_Icon: {fileID: 0}
607756
m_NavMeshLayer: 0
@@ -622,11 +771,11 @@ RectTransform:
622771
m_Father: {fileID: 883164729}
623772
m_RootOrder: 0
624773
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
625-
m_AnchorMin: {x: 0.5, y: 0.5}
626-
m_AnchorMax: {x: 0.5, y: 0.5}
627-
m_AnchoredPosition: {x: -351.47, y: 0}
774+
m_AnchorMin: {x: 0, y: 0.5}
775+
m_AnchorMax: {x: 0, y: 0.5}
776+
m_AnchoredPosition: {x: 0, y: 0}
628777
m_SizeDelta: {x: 100, y: 100}
629-
m_Pivot: {x: 0.5, y: 0.5}
778+
m_Pivot: {x: 0, y: 0.5}
630779
--- !u!114 &1931950554
631780
MonoBehaviour:
632781
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)