トップページgamedev
992コメント339KB

ゲームエンジン総合スレ★2

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2011/02/01(火) 16:58:30ID:Fc0ojZal
このスレはゲームエンジンの製作・雑談・情報交換を行う為のスレです。

ゲームエンジンに関係ない話は該当スレか雑談スレでどうぞ。

総合発表&雑談スレッド その3
http://hibari.2ch.net/test/read.cgi/gamedev/1216633635/

※前スレ
http://hibari.2ch.net/test/read.cgi/gamedev/1293381827/
0772名前は開発中のものです。2011/11/30(水) 18:16:14.10ID:umrjQ9t8
冷たくするのはヒドいね・・・
0773名前は開発中のものです。2011/11/30(水) 20:23:01.53ID:BF4rR4Fr
べ、べつにあんたなんかとライセンス契約したくないんだからねっ!法人じゃなきゃダメなんだからっ!!

こうですか?
0774名前は開発中のものです。2011/12/01(木) 01:58:05.47ID:xk0pl7/w
>>771
マッチロックが頑張ってるだけでシリコンスタジオは消極的
BISHAMONがバカ売れすればOROCHIも出るかも知れんが…
0775名前は開発中のものです。2011/12/01(木) 06:26:52.34ID:Gj0woD62
BISHAMONは値段が結構するわりにはエフェクトエディタとしてはいまいちなんだよな
0776名前は開発中のものです。2011/12/01(木) 14:37:06.23ID:yHJbAoB7
もっと英語を勉強するべきなんだろうなあ。
会話は日本人相手でも少ないから、読み書きだけ勉強するか。
0777名前は開発中のものです。2011/12/02(金) 17:08:54.24ID:uXb459L+






ワイが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な中国に戻るらしいで
もう経済は破綻してて、取り戻すのは無理なんだそうや


その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで

まあお前ら頭の良い連中には、今さらなくらいのネタやな、
お前らからすればもう常識的なくらいの知識やろ?








0778名前は開発中のものです。2011/12/02(金) 23:26:25.53ID:amQR0jM3
そろそろ1年経つのか早いな。
ぼくの考えた凄いゲームエンジンは結局一個も登場しなかったな
0779名前は開発中のものです。2011/12/03(土) 01:17:29.35ID:jUdM0qH4
BISHAMONみたいに一つのことだけ特化したライブラリでも、作るのに手間がかかるだろうからなあ。
まあ、次スレからはゲームエンジン全般のスレッドにすればいいんじゃないか。

このあたりとかテンプレに入れよう。
http://devmaster.net/devdb/engines
0780名前は開発中のものです。2011/12/09(金) 06:04:32.07ID:NxNK3Il0
effekseerなんてのもあるんだな
0781名前は開発中のものです。2011/12/09(金) 13:14:43.54ID:vh/bo4nh
ランタイムが組み込みやすくていいね。
0782名前は開発中のものです。2011/12/09(金) 21:17:22.23ID:NxNK3Il0
そろそろ公開したいがここはレベル高すぎて叩かれそうでなぁ、、、
0783名前は開発中のものです。2011/12/10(土) 00:37:23.66ID:lk5nppT+
お前にとって2chで公開する意味って何?
10年前ならまだしも今なら他にいくらでも方法あるじゃない。

ここが良いなら止めないけど。
0784名前は開発中のものです。2011/12/11(日) 17:20:16.75ID:Ex7goiSZ
>>783
単純にゲーム製作に興味があって、なおかついろいろな意見を聞ける場所を他に知らないというか・・・。

自分でHP作って公開したところで宣伝が必要ですし全てを賄うゲームエンジンではなく、
BISHAMONっぽいエフェクトエディタを目指して作っていたものなので・・・。

ツールにしろエンジンにしろまずは多数の人に触ってもらってダメだしをしてもらわないと
使いにくい独りよがりなものになってしまうんですよねぇ・・・。
0785名前は開発中のものです。2011/12/11(日) 17:59:56.09ID:R5ybnX8R
おー使ってみたい
0786名前は開発中のものです。2011/12/11(日) 20:53:06.07ID:gTbeidNn
>>784
それこそfacebookやtwitterで公開すればいいのに
2chで公開したソフトは一生2chから逃れられなくなる
0787名前は開発中のものです。2011/12/12(月) 00:01:11.61ID:TGO5HuuK
facebookは実名プレイなのが・・・
公開方法より宣伝と試用数がそれなりに行きそうな方法を考えよう・・・。
0788名前は開発中のものです。2011/12/12(月) 00:44:57.65ID:UNECVSF3
それ悩みどころだよね。
HP作って、そこを2chで宣伝してみてはどうかね?
関心を持たれなかったら、そっぽ向かれて、それまでのことで終わるし、
意見があればスレで建設的な意見も出るだろう。
0789名前は開発中のものです。2011/12/12(月) 01:09:16.78ID:PFnyZnch
まあ地道に続ければどうとでもなるよ。
商品として売れるぐらいになるまで頑張れ。
0790名前は開発中のものです。2011/12/12(月) 02:48:13.71ID:WY1K7d4I
>>787
別にみんな実名だからいいんじゃね?>Facebook
Twitterでも実名の人いるし、実名だと叩く連中がいるのは2chだけだよw
0791名前は開発中のものです。2011/12/12(月) 22:50:02.76ID:TGO5HuuK
>>790
実名自体はどうでもいいんだ・・・
会社バレを避けたい。
0792名前は開発中のものです。2011/12/12(月) 23:19:06.82ID:dOCruPJX
>>791
Freenet上で配布とか。
0793名前は開発中のものです。2011/12/13(火) 10:06:37.10ID:KisAyegw
Facebookで実名っぽい名前使えば良いんじゃない?
もしくはわざと誤変換したまま気がつかないとか。
俺は非常に特殊な名前だから、一文字誤変換させた名前で一般名に変えてる。
熊飼→熊谷ってな風に。
0794Elena Oda Vintevecom(BECKHAM)=八犬伝2011/12/15(木) 00:33:06.84ID:2kBGnUvT
検索エンジンGoogleで
インターネットテレビ 朝鮮総連 少頭劣一族 電気 人質
又は
インターネットテレビ 朝鮮総連 少頭劣一族 電気 波動砲
又は
インターネットテレビ 朝鮮総連 少頭劣一族 自民党 カニバ(又は命令)
を検索せよ。
0795名前は開発中のものです。2011/12/16(金) 18:28:39.78ID:CN6x5cSE
>>788の案で公開してみるわ。
チュートリアルとサンプル作成が間に合ったら土日に出すぜ。
0796名前は開発中のものです。2011/12/17(土) 09:40:43.88ID:c3HdajPR
>>795
おい、土曜日だぞ
0797名前は開発中のものです。2011/12/17(土) 11:17:53.44ID:TfhfpYIA
俺たちの土日はまだ始まったばかりだ!
07987952011/12/17(土) 11:56:49.28ID:Os1QoaDI
>>796
サンプルとチュートリアルまだだけど他のスレで出しちゃったし出すわ。
ttp://amayuri.dojin.com/download/rainlily_beta_0100.zip
0799名前は開発中のものです。2011/12/17(土) 14:26:18.35ID:3MKJAh62
>>798
なかなか良さげな感じがする
こういうパーティクルエディタって少し前から流行ってきてるよね
0800名前は開発中のものです。2011/12/17(土) 14:28:19.27ID:RYqigaak
イイねぇ。
0801名前は開発中のものです。2011/12/17(土) 14:55:57.20ID:ze3P7mXz
>798

すごくいいよ。
こういうの欲しがってる人
結構いるんじゃないかな?

俺は別エンジン買っちまったって同じようなFXツールも買ってしまったけど。
これがフリーで公開されるんならありだと思う。

エフェクトって作るの手間だしね。
0802名前は開発中のものです。2011/12/17(土) 16:57:01.65ID:3NQ84Fkf
>>798
ちょ、あと1か月速く公開してよ
これがあったらBISHAMON買ってねえよ…
0803名前は開発中のものです。2011/12/17(土) 17:07:27.91ID:Os1QoaDI
>>802
すまん、1ヶ月前の公開は流石にムリだw
まだ機能的にも足りてないし操作マニュアルすらない状態だしなぁ。

でもBISHAMON持ってるならものすんごいエフェクト作れるじゃん!
0804名前は開発中のものです。2011/12/17(土) 17:54:00.86ID:+Q38Ain2
Seleneの中の人だよね?
0805名前は開発中のものです。2011/12/17(土) 18:00:29.24ID:TfhfpYIA
冬コミまであとxx日!!
0806名前は開発中のものです。2011/12/17(土) 20:04:20.64ID:03j411Lq
VitaのSDKか個人でも手に入るらしいぞ
オープンソースのゲームエンジン作ろうぜ
0807名前は開発中のものです。2011/12/17(土) 20:09:17.45ID:eU/9mgQ6
>>806
今は実績ないとsdkテスターに選ばれない
春には一般公開したいらしいけど
0808名前は開発中のものです。2011/12/17(土) 20:10:14.43ID:eU/9mgQ6
>>806
あとクローズドベータだから、オープンソースのエンジンは今作っても公開したらアウトじゃないかな
0809名前は開発中のものです。2011/12/22(木) 18:19:56.58ID:QLY5TpmG
Unity本を読んだんだが、これぐらいなら自分で作れそうじゃないか?
難しいことは何もやってない。誰かLinux用でびしっと1本頼むわ
0810名前は開発中のものです。2011/12/23(金) 13:12:06.44ID:aClvGxeW
Linux用にも色々あるが?
0811名前は開発中のものです。2011/12/25(日) 12:18:51.70ID:J72y1Vqi
pss sdkのテスター選考緩くなったみたい。
週末はTwitterで国内外の色々な人から当選報告が出てた。
まだvitaでは動かないらしいです。

自分も休み明けからさわりはじめてみます。
0812名前は開発中のものです。2011/12/26(月) 23:20:36.53ID:kV2ypsgu
英語わからなくても使える物理エンジンってあったら教えて
0813名前は開発中のものです。2011/12/27(火) 05:36:32.08ID:1KH7psDJ
ソースコードが読めるんなら、全部オッケーじゃないのかw
それ以前にソースコートって大抵英語のような…
0814名前は開発中のものです。2011/12/27(火) 09:59:50.24ID:YTwtk8zf
>811
あれ俺のところにはまだ当選メール来てないけど
困るなあちゃんと配送してくれないと(´;ω;`)
0815名前は開発中のものです。2011/12/27(火) 23:46:55.10ID:Dx89yn0s
>>814
フォーラムでは2Dスプライトを簡単に扱いたいみたいな話があちこちであがってるので、ほぼまともにGL触ったことないと思われる人ま選ばれてると思う。だから審査は厳しくないはず。気長に待てばよろし。

無理矢理このスレに絡めると、2Dゲームエンジンは需要あり
0816名前は開発中のものです。2011/12/27(火) 23:47:51.31ID:Dx89yn0s
訂正
>人ま
人まで
0817名前は開発中のものです。2011/12/28(水) 01:04:02.80ID:xDqb+NSK
OpenGLを素で扱うということは、ゲームエンジンよりもライブラリに近い感じなのかな。
Unityが使えるという噂もあったけど、そんなこともなかったようだ。
0818名前は開発中のものです。2011/12/28(水) 01:59:06.00ID:XyaxT+Qm
OpenGLを素で使うといことは三角形や線を塗りつぶして行く感覚だよ。
0819名前は開発中のものです。2011/12/28(水) 09:41:02.21ID:Lmdfg00J
>>817
ちょこっとだけラップされてる。
既存コードから流用しにくくなった気もするが、新規コードを起こす分には平気。外部の既存エンジンに頼るつもりの人は南無。

あとプログラマブルシェーダが使えるには使えるんだが、そっちかよ!って突っ込むと思う。
0820名前は開発中のものです。2012/02/28(火) 21:15:40.02ID:0+YFP2RK
俺達でUnityを丸パクリしたゲームエンジンをC#で作らないか!!
PSS用にどうよ?
0821名前は開発中のものです。2012/02/28(火) 21:27:33.60ID:0+YFP2RK
>>817
Wikipediaに書いてあったが何とかライセンスを結ぶとUnity for VITAが使えるらしいぞ。スクエニが使っているらしい
でもそれはPSSとは何の関係もない話。あくまでUnityのVita用バイナリ
PSSで使おうと思ったら全部C#で書かれたフリーのゲームエンジンが必要
.Net/XNA/WindowsようはいくつかあるけどPSSで動くように移植するのは手間か?
どうせなら俺達で1から作らないか! Unityみたいなの!!

0822名前は開発中のものです。2012/03/02(金) 08:19:42.66ID:cyOaKk/w
>>820
sdk内に3D物理関係の機能が無い。
こんなんマネージコードで実装して実用レベルになるんだろうか。
0823名前は開発中のものです。2012/03/02(金) 08:53:54.73ID:CmQt3f/n
ならないんじゃね、と思うがよくわからん
NVIDIAも絡んでるみたいだし、そのうちPhysiXが使えるようになると期待
PSSがこの先生きのこるには
0824名前は開発中のものです。2012/03/02(金) 11:44:15.63ID:YYwIDnHv
至れり尽くせりにするとアマチュアとの差がなくなるからパフォーマンスが出ないように
0825名前は開発中のものです。2012/03/03(土) 11:22:52.95ID:OcHynySh
クタたんちーーーっす
まともなシステムを提供できないハード屋の言い訳だったよな結局
0826名前は開発中のものです。2012/04/24(火) 12:23:16.39ID:CGjbqOQ2
シェーダーで使うパラメーターって
直接Uniform変数としてセットするか
一回シーングラフの要素にしてからUniform変数にセットするのか
どちらでしょうか。具体的には
(1)SetUniform("DiffuseColor", 0xff7c7c7c)みたいな形か
Materil.DiffuseColorみたいなクラスをシーングラフに作って
(2)BindUniform(Material, "DiffuseColor");
みたいな形でしょうか
0827名前は開発中のものです。2012/04/26(木) 23:26:21.89ID:A2k6P93r
>>826
何の話か全くわからん。
08288262012/04/27(金) 02:00:43.59ID:s88IsWZj
わかりにくくてすみません
ある描画ライブラリの仕様が(1)のSetUniform()形式です
シーングラフのオブジェクトのパラメーターを自分でGet()してSet()してね毎ターン、
というスタンスなのですが、どうもこれが気に入らない。
エンジンの人間ではなくゲーム本体を作っている人間が
毎フレームシェーダーに送る定数をGet()してSet()しなければならないのがまずおかしい。
シーンの描画は最終的には
Graphics3D.Render (scene);
のように1行で描画できるべきで、シーンの構築が不完全と言わざるを得ない。

08298262012/04/27(金) 02:07:30.65ID:s88IsWZj
具体的には、
1) シーンのノードは自由に継承してユーザー独自のノードを作れる
2) そのパラメーターの名前は自由に決められる
3) そのパラメーターをシェーダーに送るように設定できる(bind)
4) それらのパラメーターをシーン全体で一発更新できる(refresh)
という仕様に変更しようと思うのですが、元の仕様とは大分変えないと実装できなくて
世の中の人間はもしかして元の仕様のほうがいいのか、私の考えが間違えているのかとか
いろいろ悩んでます。
やっぱりシーンの構築が終わったらRender(scene)一発で描画できたほうがいいですよね?
0830名前は開発中のものです。2012/05/08(火) 16:37:47.58ID:ZnS759Md
過疎スレですが質問させて下さい
シャドーマップを作る時のZレンダリングのパスでは
設定されているシェーダーではなく共通のシャドーマップ生成シェーダーを使うと思うのですが、
これは例えばMeshオブジェクトには複数のシェーダーをセットしてパスによって切り替えるのでしょうか
それとも設定されたシェーダーは無視して強制的にこのシェーダーを使って描画しろみたいな仕組みがあるのでしょうか





0831名前は開発中のものです。2012/05/08(火) 16:47:49.27ID:t0hk3c7e
SDL1.3っていつ出す予定なんだろ
0832名前は開発中のものです。2012/05/11(金) 23:39:09.14ID:suo5RzJ8
SFMLに移った方が良いかもね
0833名前は開発中のものです。2012/05/12(土) 06:04:11.95ID:j7glUpjZ
SDL1.3からライセンス変わるのか
0834名前は開発中のものです。2012/05/12(土) 11:15:18.30ID:dh+2Cdpr
>>832でSFMLってのを初めて知った。
0835名前は開発中のものです。2012/05/12(土) 15:46:01.79ID:t1/k5I6d
そんな事より>>830を誰か頼む
一応今の予定では強制シェーダー描画モードを搭載する予定だ
0836名前は開発中のものです。2012/05/27(日) 18:59:39.99ID:Y4NWpX9P
関連スレのタスクシステム総合スレが死んだな...
http://logsoku.com/thread/toro.2ch.net/gamedev/1285930493/
0837名前は開発中のものです。2012/05/28(月) 00:56:51.34ID:u1bjFmUz
ここも過疎スレ
誰かゲームエンジン作れよう
0838名前は開発中のものです。2012/05/31(木) 16:06:02.52ID:pvRLoXCp
タスクシステムが逝ったか・・・。
まあ、ゲーム製作スレ四天王の中でも最弱な面汚しだからな!
0839名前は開発中のものです。2012/05/31(木) 16:17:08.24ID:qv7/wZ3v
残ってる四天王教えてくれ
0840名前は開発中のものです。2012/05/31(木) 22:53:49.74ID:acleENic
最強

   __(^^) <ペイピッポォ
  /__ \ 
  | |   |  |
  (_) (__)
0841名前は開発中のものです。2012/06/01(金) 09:40:35.93ID:HPWeBJvF
エターナル4天王

・ゲームエンジン総合
・タスクシステム総合
・Unity総合
・ゲーム制作メンバー募集
0842名前は開発中のものです。2012/06/08(金) 18:09:45.18ID:BfK68cYV
>>837
エンジンなら腐るほどあるだろうに
UnityみたいなエンジンならUnityで十分

既成概念を超えるアイデアがない限り無駄
0843名前は開発中のものです。2012/06/08(金) 19:28:08.54ID:IjypruKw
夢がないね
0844名前は開発中のものです。2012/06/08(金) 19:44:30.73ID:Sx3NhmAP
先の無い夢に人生を賭ける馬鹿は死ぬ
0845名前は開発中のものです。2012/06/08(金) 22:12:20.58ID:FXgS0hSf
いろいろググって廃れたフォーラム覗いたときに
トピックの返信が一桁、二桁だらけなのを見ると悲しくなるな
やっぱりある程度のユーザー数がないとモチベが切れちゃうんだろうね
0846名前は開発中のものです。2012/06/11(月) 10:17:08.48ID:mg7RVjtw
エンジンよりフレームワーク書いたほうがいい
実装は既存のエンジンで
0847名前は開発中のものです。2012/06/11(月) 16:41:14.83ID:QQ2wAZcB
グダグダ言うよりまず物を作れとあれほど言ってるのに・・・
0848名前は開発中のものです。2012/06/14(木) 15:09:50.58ID:P1eAlaUs
Ogre3DとIrrlichtとOpenScenGraphを調べたんだけど、どれも酷いね
有名なライブラリだから期待してたんだけど使い物にならない
Ogre3Dはシェーダー周りが独特で見るも無残なできだし、
Irrlichtはまだましだが目が潰れるぐらい汚らしい
この2つは論外。OpenSceneGraphはかろうじて合格
それでも固定シェーダー時代の名残なのかシェーダー時代のエンジンとしては使えないだろう

結論は俺が作ったほうがまし
0849名前は開発中のものです。2012/06/14(木) 16:03:23.05ID:rpEq0sqK
早く作ってオープンソースで公開してね^^
0850 ◆qSKP3eYtY6 2012/06/26(火) 21:59:31.92ID:mR6HJejQ
よーし、パパゲームエンジン作っちゃうぞー

C#, .Net, OpenGL環境(だけどPSMとかに移植可)
シーングラフ、アニメーション、シェーダー、スケレタルアニメーション、コリジョン検出など
今日からここが俺の日記帳だ!
0851名前は開発中のものです。2012/06/27(水) 09:58:10.93ID:U29IMiHf
やったー!
0852 ◆qSKP3eYtY6 2012/06/28(木) 16:15:23.72ID:WtTC5o4X
シーングラフは「ノード ー コンポーネント」モデルとする
造語だけどUnityみたいな形といえばわかりやすい
3D空間上の1点が1ノードで、そこに色々な機能を持ったコンポーネントをアタッチして使うのが基本

Predicateで指定した条件が一致するノードを探すFind, FindAllと
指定のコンポーネント型を探すFind<TComp>, FindAll<TComp>がある
子ノードをたどってActionを実行するTakeもある
あとはSendMessage()で関数名(string)を指定してコンポーネントの関数を呼び出せる

ざっくりとガワだけ書くとこんな感じ
http://dl.dropbox.com/u/32901747/DDD/DDD-20120628.chm
(セキュリティ警告を外さないと見られないかも)


0853 ◆qSKP3eYtY6 2012/06/29(金) 15:09:28.16ID:KafWz+Or
DDDのクラスは単一のObjectクラスを継承する(標準のObject)とは別
このObjectクラスにはUniqueID, UserID, UserObject等を含むがおもしくも何ともない話なので省略
Objectクラスの一番重要なのはアニメーション機能。
DDDではAnimationTrackを1基本アニメーション単位とする
このアニメーションを任意のプロパティ(Setter必要)にセットすると準備完了
Animate()関数の呼び出しで値が書き換わる
これはノードのアルファ値を書き換えている例

node.AddAnimationTrack (anim, () => node.Alpha);

第2引数が珍しい形だが、これがC#で最も簡単にプロパティを指定する方法
型はExpression<Func<T>>だが特に気にする必要はない

0854 ◆qSKP3eYtY6 2012/07/01(日) 20:59:13.49ID:KktJ7lkD
アニメーションは「値型でSetter/Getterを持ったプロパティ」なら何でもセットできるようにする
この辺はC#の機能をフルに使っている
クラス的にはKeyframeSequence<T>とAnimationTrackが存在し、
複数のAnimationTrackをAnimationClipが管理する(再生速度などはこのクラス)
歩くとか走るはこのClipが相当する
Clipを差し替える時は特に仕組みを用意してないが(全てのTrackを手動で切り離すことになる)
この辺は考慮中。あるいは
node.AddAnimationTrack()ではなくnode.AddAnimationClip()でクリップ単位でアニメーションをセットしたほうがいいのかもしれない。



0855 ◆qSKP3eYtY6 2012/07/02(月) 17:22:25.28ID:PZRbc+vH
MathパッケージにはVector2,3,4, Matrix3x3, 4x4, Quaternionが含まれる
すべてC#の構造体を使って実装される
これらの構造体はプロパティとしてアニメーションを付加されたりUniform変数としてシェーダーにエクスポートされる
特徴は次の2つ
(1) 構造体は不変量とする
 どうしようかずいぶん迷ったがこれらの構造体は不変量、つまりnewした後は一切変更できない事にした。
 不便そうだが直感に反してそうでもない。いちいち計算のたびに新しい構造体を作るがコストは安い。
(2) 必ずプロパティ(ComponentCount)と添え字演算子([])を実装する。これはエクスポートする時に必要となる

Vector2,3,4は1つにまとめてもいいが、今回はタイプセーフを優先して別クラス
座標系はOpenGLと同じ右手系でV=MVの形.

 

0856 ◆qSKP3eYtY6 2012/07/03(火) 19:49:13.53ID:WXHikQCo
>>853
node.AddAniamationTrack()ではなくnode.AddAnimationClip()に変更
クリップ単位でセットすることにした。理由はその方が簡単
開発マシンをSSDにしてたら一日消えたんだぜ。まじ呪うMicrosoft
0857 ◆qSKP3eYtY6 2012/07/04(水) 10:25:33.70ID:ZninQWD9
Uniform変数の実装について。
今現在よくある実装はSahderProgramやVertexBufferみたいなクラスに
いきなり値をSetUniform("Alpha", 1.0f)みたいに突っ込むがこれは良くない習慣だと思っている
(1) この関数を呼んだ時に値がセットされるので毎フレームOnDraw()の中で呼ぶ必要がある
(2) 毎回呼ぶので依存関係がわかりにくい。

DDDでは「データ構造と操作の分離」を基本思想としているので、以下のように実装しようと思う
ShaderArrayクラス。使用するUniform変数の情報を保存するコンテナクラス
AddUniform(name, object, property)でどのオブジェクトのどのプロパティをどの変数でエクスポートするかセットする
この段階ではまだ値はセットされず、後のRender()関数内部でこの情報に従って値がセットされる(データ構造と操作の分離)

※ 型とサイズ(vec2,3,4)はシェーダーをコンパイルした時に判定するのでここでは必要ない
※ Uniform変数の配列は当面なし。どう実装すべきか良いアイディアがない





0858 ◆qSKP3eYtY6 2012/07/04(水) 14:35:40.37ID:ZninQWD9
ShaderProgramについて
シェーダーはShaderProgram1つで全て賄う(FragShader, VertShaderはなし)
クラス名を可能な限り少なくするのがDDDの思想
DDDはHWに依存しないのでコンパイルとリンクはRender()まで行われない(というかできない)
定義されたAttribute変数とUniform変数を列挙する列挙しがある。型はIEnumerable<ShaderVariable>.
ShaderVariableは>>857>>858の両方で使用する
これもやはり「クラス数を可能な限り少なくする」ため

シェーダーで定義された変数名と型を調べてそれが>>857でセットした一覧にあればそのオブジェクトとプロパティから値を拾ってきてエクスポートする事になる




0859名前は開発中のものです。2012/07/04(水) 14:40:27.10ID:ZninQWD9
シェーダーにエクスポート出来る変数はIExportableインターフェースとして明確化した
ComponentCountとValueTypeを返す添字演算子を持つ
よく考えるとIExportableはIAnimatableでもあるわけだが・・・
0860 ◆qSKP3eYtY6 2012/07/04(水) 16:27:05.51ID:ZninQWD9
ある意味もっとお世話になるMesh周りはこうしようと思う

Mesh
 VertexBuffer
 IndexBuffer(s)
 Appearance(s)
   ShaderProgram
   UniformArray(s)
   Texture(s)
   Material
   PolygonMode,BlendMode,PointSpriteMode

(s)が付いているのは複数。IndexBufferとAppearanceが複数なのはサブメッシュ。
見え方は「Appearance」が担当する。
Appearanceは1つのShaderProgramとそこで使用するUniform変数のセット。あとTextureとMaterial。
Materialはユーザーがシェーダーに渡すパラメーターをセットしたObjectを置いておくためのプレースホルダー。Materialクラスは完全に空でユーザーが継承して使用する。
>>857の理由によりUniform変数には直接値をセットしない事に注意。
かならず値を取ってくる元になるObjectのプロパティがなければならない。
あとのPolygonMode, BlendMode, PointSpriteModeはシェーダーから触れないOpenGLの機能を変更するためのつまらないクラス
ポイントスプライトとは独立したノードではなくMeshクラスを使用する。




0861 ◆qSKP3eYtY6 2012/07/05(木) 14:00:11.24ID:flNlSeDp
VertexBufferとIndexBuffer
バーテックス・バッファーはAttribute変数として送られる頂点ごとのデータのバッファー(x,y,z, 法線, テクスチャー座標など)
インデックス・バッファーはglDrawElement()で使うインデックス。
この辺のデータ構造はライブラリによって異なるが、どの方式が有利とかは多分無い
DDDではMeshの下にVertexBufferx1とIndexBufferxnを持つ
生の頂点データはVertexArray<T>クラスが保存する
これはそのままglBufferData()でGPUに送り込める形そのもの
操作は非ジェネリックな同名のVertexArrayを通して行う
IndexBufferは本当にintの配列をどかんと持っているだけ
やはりそのままglBufferData()でGPUに転送する


0862名前は開発中のものです。2012/07/05(木) 14:05:32.16ID:flNlSeDp
描画できるプリミティブについて

トライアングル、ライン、ポイントスプライトの「リスト」形式のみ「ストリップ」には対応しない
これは現在のGPUではリスト形式を使ったほうが高速で、あえてストリップ形式を使う理由がないため
シンプルである事を価値とするので複数の手段は提供したくない
インデックスを指定する時にリスト形式だと冗長なのでストリップ形式でも指定できるようにしようかとも考えたが
上記の理由でバッサリ削除
この辺は異論も出そうだが実際に作っている人の裁量の範囲ないということで
0863名前は開発中のものです。2012/07/05(木) 14:08:25.82ID:cRpEW0yx
あれ
インデックスは32bit限定?
ushort版はなし??
0864名前は開発中のものです。2012/07/05(木) 16:20:07.98ID:2Z2qwIZw
これってこの部分を実装しましたという報告なのか、これからやりますなのか
0865 ◆qSKP3eYtY6 2012/07/05(木) 16:37:17.91ID:flNlSeDp
>>862
intあればいいと思ったけど対称性悪いからIndexBuffer<T>にしといた
今の所ジェネリックなのはVertexArray<T>とIndexBuffer<T>とKeyframeSequence<T>
全部同名の非ジェネリック版ばあって操作はそちらから行う


0866 ◆qSKP3eYtY6 2012/07/05(木) 16:40:06.48ID:flNlSeDp
>>864
今の所ガワ(API)だけ実装してある。中身はすっからかん
必要なフィールドとかは置いてあるので実装はそんなに苦労しないはず
それでも月単位で必要だけど

0867 ◆qSKP3eYtY6 2012/07/05(木) 16:49:34.85ID:flNlSeDp
テクスチャーまわり

Image2DとTexture2D, TextureCube。あと基底クラスのTexture.
画像のロードは.NetのSystem.Drawingにやってもらう。
データの入力形式としては.NetのBitmapかbyte[].
フォーマットはLuminance, Alpha, LuminanceAlpha, RGB, RGB.
パック形式のRGB565, RGB5551はとりあえず対応しない。S3とかも対応しない
リピートはClampとRepeat. テクスチャー関数というかDecal, Modulteなどはシェーダー内部の話なのでここでは出てこない
あとテクスチャークラスに直接画像をロードするライブラリもあるけど今回は1クッション(Image2D)を置く

0868 ◆qSKP3eYtY6 2012/07/05(木) 17:22:59.32ID:flNlSeDp
テクスチャーについて1つ注意点がある
通常CPU側にはTexture2Dクラスがあって、シェーダー側からアクセスする時は「テクスチャーユニット番号」を使用する
何番のユニットにロードされたかはTexuture2Dクラスの知る所ではなく、そのプロパティとしてテクスチャー番号を取得できない
(1つのTexuture2Dが別のユニットにセットされる事はあり得る)
従ってこれはAppearanceクラスの仕事(プロパティ)になる。
が、これは明らかにおかしくて本来はTexuture2Dクラスをシェーダー側のテクスチャー変数何とかにバインドするのが自然である
(ただしそれは上記の理由により不可能)

ではどうするか?
Texture2Dは同じ番号のユニットにロードされなければならないという制限を科す。
この制限のもとでTexture2D.TexturUnitでユニット番号が取れるようにすれば、
シェーダー側にユニット番号を自然な形でエクスポートする事ができる


0869名前は開発中のものです。2012/07/05(木) 19:13:16.47ID:gC4tIXCC
svnかgitを使って公開して欲しいなぁ
0870 ◆qSKP3eYtY6 2012/07/06(金) 14:05:57.42ID:FBQYllXg
>>869
してる。けどまだ見る価値はない
0871名前は開発中のものです。2012/07/06(金) 14:11:27.57ID:FBQYllXg
BoundingVolume(BV)

BVは球かボックスで、カリング、ピッキング、LODで使われる。
コリジョン検出は別の専用のCollisionVolumeを用意する
たぶん珍しい形だと思うけどBVは独立したクラスにせずNodeの単なるパラメーターとする
BVはユーザー定義のBVと、シーンをフリーズ(後述)した際に自動で作られるBV階層のBVに分かれる




■ このスレッドは過去ログ倉庫に格納されています