質問編集履歴

2

s

2017/06/24 00:09

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -114,7 +114,7 @@
114
114
 
115
115
 
116
116
 
117
- ちなみにカーネルの定義を以下のようにした場合は、ountとunicoとゆう変数はsubmainで使えてmainでは使えなくなります。
117
+ ちなみにカーネルの定義を以下のようにした場合は、countとunicoとゆう変数はsubmainで使えてmainでは使えなくなります。
118
118
 
119
119
  ```ここに言語を入力
120
120
 

1

修正

2017/06/24 00:09

投稿

seri
seri

スコア422

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  #pragma kernel btn_tettai
8
8
 
9
+ #pragma kernel main
9
10
 
11
+ #pragma kernel submain
10
12
 
11
13
  RWStructuredBuffer<Bullet> buff1;
12
14
 
@@ -42,6 +44,14 @@
42
44
 
43
45
  void btn_tettai(uint3 id : SV_DispatchThreadID) {}
44
46
 
47
+ [numthreads(8, 1, 1)]
48
+
49
+ void main(uint3 id : SV_DispatchThreadID) {}
50
+
51
+ [numthreads(8, 1, 1)]
52
+
53
+ void submain(uint3 id : SV_DispatchThreadID) {}
54
+
45
55
  ```
46
56
 
47
57
 
@@ -52,50 +62,72 @@
52
62
 
53
63
 
54
64
 
55
- cs.SetBuffer(cs.FindKernel("btn_attack"), "Bullets", units);
65
+ cs.SetBuffer(cs.FindKernel("btn_attack"), "buff1", buff1);
56
66
 
57
- cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "Bullets", units);
67
+ cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "buff1", buff1);
58
68
 
59
- cs.SetBuffer(cs.FindKernel("btn_tettai"), "Bullets", units);
69
+ cs.SetBuffer(cs.FindKernel("btn_tettai"), "buff1", buff1);
60
70
 
61
- cs.SetBuffer(cs.FindKernel("AttackMain"), "Bullets", units);
71
+ cs.SetBuffer(cs.FindKernel("main"), "buff1", buff1);
62
72
 
63
- cs.SetBuffer(cs.FindKernel("PoliceMain"), "Bullets", units);
73
+ cs.SetBuffer(cs.FindKernel("submain"), "buff1", buff1);
64
74
 
65
75
 
66
76
 
67
77
 
68
78
 
69
- cs.SetBuffer(cs.FindKernel("btn_attack"), "police", polices);
79
+ cs.SetBuffer(cs.FindKernel("btn_attack"), "buff2", buff2);
70
80
 
71
- cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "police", polices);
81
+ cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "buff2", buff2);
72
82
 
73
- cs.SetBuffer(cs.FindKernel("btn_tettai"), "police", polices);
83
+ cs.SetBuffer(cs.FindKernel("btn_tettai"), "buff2", buff2);
74
84
 
75
- cs.SetBuffer(cs.FindKernel("AttackMain"), "police", polices);
85
+ cs.SetBuffer(cs.FindKernel("main"), "buff2", buff2);
76
86
 
77
- cs.SetBuffer(cs.FindKernel("PoliceMain"), "police", polices);
87
+ cs.SetBuffer(cs.FindKernel("submain"), "buff2", buff2);
78
88
 
79
89
 
80
90
 
81
- cs.SetFloat("DeltaTime", Time.deltaTime);
91
+ cs.SetFloat("DeltaTime", Time.deltaTime);
82
92
 
83
93
  cs.SetFloat("Time", Time.time);
84
94
 
85
- cs.SetFloat("stagewidth", 6f);
95
+ cs.SetFloat("stagewidth", 6f);
86
96
 
97
+
98
+
99
+ float count= hoge.count;
100
+
101
+ float unico=huge.count;
102
+
103
+ cs.SetFloat("count", count);
104
+
105
+ cs.SetFloat("unico", unico);
106
+
87
- }
107
+ ```
88
108
 
89
109
 
90
110
 
91
- float polifloat = policecount;
111
+ とした際、countとunicoとゆう変数がmainでは使えるのですがsubmainでは使えず0の値が入ってしまいます。
92
112
 
93
- float unifloat = GaisyutuUnits.Units.Count;
113
+ 変数定義の際、何か失敗をしていると思うのですが何が原因でしょうか?
94
114
 
95
- cs.SetFloat("mypoli", polifloat);
96
115
 
97
- cs.SetFloat("unico", unifloat);
98
116
 
117
+ ちなみにカーネルの定義を以下のようにした場合は、ountとunicoとゆう変数はsubmainで使えてmainでは使えなくなります。
118
+
119
+ ```ここに言語を入力
120
+
121
+ #pragma kernel btn_attack
122
+
123
+ #pragma kernel btn_attacktwo
124
+
125
+ #pragma kernel btn_tettai
126
+
127
+ #pragma kernel submain
128
+
99
- Debug.Log(unifloat);
129
+ #pragma kernel main
130
+
131
+
100
132
 
101
133
  ```