【ゲームエンジン】Unityなんでも質問スレpart5at GAMEDEV【ゲームエンジン】Unityなんでも質問スレpart5 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト46:名前は開発中のものです。 21/09/03 07:56:06.02 bay2tjkn.net メッシュ描画したいならdrawmeshじゃダメなん? 47:名前は開発中のものです。 21/09/03 14:37:44.36 6loRjXu+.net シェーダーの書き方が間違ってるのに、コードもなしにどうしてでしょうかって言われてもw 48:名前は開発中のものです。 21/09/03 18:31:33.35 LGIFZOLo.net >>47 描画用シェーダだけだと、今は最もプリミティブなものを作っているのでこんな感じです。 vs_out vert (uint id : SV_VERTEXID) { Out.pos = float4(float3(tubeBuffer[id]), 1); return Out; } [maxvertexcount(128)] void geom (point vs_out input[1], inout TriangleStream<gs_out> outStream) { gs_out o; float4 pos = input[0].pos; o.pos = pos; outStream.Append(o); } fixed4 frag (gs_out In) : COLOR { return _Color; } 49:名前は開発中のものです。 21/09/03 18:34:05.75 LGIFZOLo.net 計算は、コンピュートシェーダーでやっています。 _Origin_x, _Origin_y, _Origin_z は、予めC#の方で計算しておいた、カメラのワールド座標とベクトルから求めた、カメラから一定の距離にある、カメラ正面の座標です。 [numthreads(64,1,1)] void tubeAl (uint id : SV_DispatchThreadID) { float3 position; for (int i = 0; i < 16; i++) { float radius = 1.0 + (0.5 * i); for(int j = 0; j < 7 + (6 * i); j++) { float a = radius * cos(j * 0.785 * (1 / (i + 1 ))); float b = radius * sin(j * 0.785 * (1 / (i + 1 ))); position.x = a + _Origin_x; position.y = b + _Origin_y; position.z = _Origin_z; } } tubeBuffer[id] = position; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch