#pragma kernel btn_attack #pragma kernel btn_attacktwo #pragma kernel btn_tettai #pragma kernel main #pragma kernel submain RWStructuredBuffer<Bullet> buff1; RWStructuredBuffer<Bullet> buff2; float DeltaTime; float Time; float stagewidth; float count; float unico; [numthreads(8, 1, 1)] void btn_attack(uint3 id : SV_DispatchThreadID){} [numthreads(8, 1, 1)] void btn_attacktwo(uint3 id : SV_DispatchThreadID){} [numthreads(8, 1, 1)] void btn_tettai(uint3 id : SV_DispatchThreadID) {} [numthreads(8, 1, 1)] void main(uint3 id : SV_DispatchThreadID) {} [numthreads(8, 1, 1)] void submain(uint3 id : SV_DispatchThreadID) {}
このようなComputeShaderを定義した際、C#から
cs.SetBuffer(cs.FindKernel("btn_attack"), "buff1", buff1); cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "buff1", buff1); cs.SetBuffer(cs.FindKernel("btn_tettai"), "buff1", buff1); cs.SetBuffer(cs.FindKernel("main"), "buff1", buff1); cs.SetBuffer(cs.FindKernel("submain"), "buff1", buff1); cs.SetBuffer(cs.FindKernel("btn_attack"), "buff2", buff2); cs.SetBuffer(cs.FindKernel("btn_attacktwo"), "buff2", buff2); cs.SetBuffer(cs.FindKernel("btn_tettai"), "buff2", buff2); cs.SetBuffer(cs.FindKernel("main"), "buff2", buff2); cs.SetBuffer(cs.FindKernel("submain"), "buff2", buff2); cs.SetFloat("DeltaTime", Time.deltaTime); cs.SetFloat("Time", Time.time); cs.SetFloat("stagewidth", 6f); float count= hoge.count; float unico=huge.count; cs.SetFloat("count", count); cs.SetFloat("unico", unico);
とした際、countとunicoとゆう変数がmainでは使えるのですがsubmainでは使えず0の値が入ってしまいます。
変数定義の際、何か失敗をしていると思うのですが何が原因でしょうか?
ちなみにカーネルの定義を以下のようにした場合は、countとunicoとゆう変数はsubmainで使えてmainでは使えなくなります。
#pragma kernel btn_attack #pragma kernel btn_attacktwo #pragma kernel btn_tettai #pragma kernel submain #pragma kernel main
あなたの回答
tips
プレビュー