トップページgamedev
1001コメント308KB

PlayStation Suiteプログラミング part 1

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2012/02/25(土) 11:36:53.06ID:8ExgBs8d
PlayStation(R) Suite SDKを使ってゲームを作るためのスレ

SDKは現在クローズドβで公開中です。
申し込みはこちら(個人でも申し込み可能だが選考基準は不明)
http://www.playstation.com/pss/closedbeta/index_j.html


0736名前は開発中のものです。2012/04/24(火) 16:14:57.87ID:wq09/RGE
>>735
選択肢が増えるのは良いことじゃないの
俺はコード的には、こっちのライブラリ体系の方が好きよ
馴染みの話だけど、コード書いてどう思った?
0737名前は開発中のものです。2012/04/24(火) 16:33:35.09ID:CGjbqOQ2
>>736
3D周りが気に入らないから自分で3Dライブラリを作り出した^^;
SCEIの公開しているのとかぶる機能も多いので
無駄というか何というか
公開するつもりだけどこういう活動に意味があるのか疑問だ...
0738名前は開発中のものです。2012/04/24(火) 16:41:33.93ID:KrPYNDXS
ソニーって他部門間で足引っ張り合うことばっかりしてるな
0739名前は開発中のものです。2012/04/24(火) 16:53:37.16ID:3MPNzT29
>>738
PSSにおいて何がどう引っ張ってるんですか?
プログラムとかツールの話題以外はゲハでやってくれませんかね
0740名前は開発中のものです。2012/04/24(火) 17:08:06.54ID:X5Rz78Q0
>>739
単発のネガティブ発言はそういった所から来た可哀想な人だから触んない方がいいよ
0741名前は開発中のものです。2012/04/24(火) 17:28:45.28ID:pmwVqNX8
Arcで動かすとわかるけどエミュより遅いよ
デモが30FPSばかりなのはArcにあわせてる
0742名前は開発中のものです。2012/04/24(火) 17:56:34.46ID:3MPNzT29
エミュが優秀なのか
Androidのとか糞遅かった記憶が
0743名前は開発中のものです。2012/04/24(火) 18:17:20.73ID:gxaoK0qy
あれはGoogleが頭おかしいだけ
無料に釣られてあんなゴミ環境で開発するAndroid開発者は脳味噌腐ってる
0744名前は開発中のものです。2012/04/24(火) 18:40:38.31ID:4siYIrZG
描画まわりの最適化方法も機種で違うんですかね
0745名前は開発中のものです。2012/04/24(火) 20:15:18.03ID:wq09/RGE
>>737
いや、UnityとPSSの話じゃないの
要は触ってないって事な?

自前のライブラリなら、俺も過去に何度か書いてるけど、そう言う意味だと、
どっちもbulletの管理形態に似てるよ
あとPSSの方は、DirectXを意識してる印象
0746名前は開発中のものです。2012/04/24(火) 20:31:25.12ID:/Cbv1Mep
シェーダについて勉強したいんだけど何勉強したらPSSに生かせますかね?
OpenGL?DirectX?
0747名前は開発中のものです。2012/04/24(火) 20:39:08.18ID:4siYIrZG
OpenGLとCgかねぇ?
0748名前は開発中のものです。2012/04/24(火) 21:17:03.19ID:GIz72Dro
最終的にPSSの方が面白いから、Android開発は切ることにした。
友達相手に自慢するならPSVitaで動くゲーム作ったっていった方が自慢になることが分かりましたので
0749名前は開発中のものです。2012/04/24(火) 21:17:40.20ID:YK27atVn
>>743
フリーウェアを出し易いというのは、それなりに魅力ではあるけどなー
そんなに高いもんじゃないとはいえ、フリーウェアを出して赤字になるのはモチベ下がるし。
0750名前は開発中のものです。2012/04/24(火) 21:21:16.82ID:wq09/RGE
>>746
nVIDIAのCgだけど、結局むしろ書く内容が焦点なので、
まったく意味わからない状態ならなんでも
計算方法と、それに使う要素がはっきり書かれてる本買うといいぜ
0751名前は開発中のものです。2012/04/24(火) 21:29:14.77ID:CGjbqOQ2
シェーダー側はCgでDirectXっぽいけど、
呼び出し側のGraphicsContextはOpenGLっぽいんだよな
何が何だか...
0752名前は開発中のものです。2012/04/24(火) 22:00:10.64ID:qEgr1S8A
Vitaに転送したアプリの消し方がわからん
0753名前は開発中のものです。2012/04/24(火) 22:02:50.71ID:qEgr1S8A
途中送信してしまった…
どうすれば消せるんだ?
全部消すときはソフト消せばいいのだろうけど…
0754名前は開発中のものです。2012/04/24(火) 22:12:02.82ID:ygoINHnQ
デモは一通り見た。
で、俺も同じくVitaからの消し方がわかんねw
0755名前は開発中のものです。2012/04/24(火) 22:13:12.41ID:4siYIrZG
フォーラムで聞いてくれ
0756名前は開発中のものです。2012/04/24(火) 22:21:36.65ID:qEgr1S8A
英語わかんね…
0757名前は開発中のものです。2012/04/24(火) 22:34:43.03ID:CGjbqOQ2
それ外人が質問してるの見たな。これじゃね?
http://community.eu.playstation.com/t5/PS-Suite-Studio/Deleting-Project-Off-Vita/m-p/15813027/highlight/true#M224

Developer Assistant丸ごと消す以外に方法はないらしい。
つか俺Vitaもってねーーーーーー
0758名前は開発中のものです。2012/04/24(火) 22:45:42.79ID:hKEv9pfB
SECがSkypeアプリ明日から配布するらしい。
あとは2ちゃんアプリとようつべアプリがあれば・・・
あ、その為のPSSか
0759名前は開発中のものです。2012/04/24(火) 22:48:04.98ID:qEgr1S8A
エルベータの会社か?
0760名前は開発中のものです。2012/04/24(火) 23:06:34.25ID:fS7suYi4
>>734
逆じゃね?
混沌と化しててAndroidマーケットの報われないけどいいゲームの制作者を救済(又の名を囲い込み)しつつ
Vita上で動かせることによって自作プログラムの為に割ろうとするハッカーを押さえようとしてる(?)し
いろいろと考えられた戦略だと思うんだけど
0761名前は開発中のものです。2012/04/24(火) 23:12:07.90ID:C19dNN09
>>758
日本の会社だから、それなりの配慮さえされていれば
2ちゃんねるブラウザは通ると信じている

WindowsPhoneのマーケットはひどかったらしいね
0762名前は開発中のものです。2012/04/24(火) 23:17:34.35ID:uzA8wXqe
したらば掲示板アプリとして誤魔化せばなんとか
0763名前は開発中のものです。2012/04/24(火) 23:18:14.66ID:b//Bnifr
これ画面にテキスト表示するだけのためにどれだけの下準備が必要なんだ?
0764名前は開発中のものです。2012/04/24(火) 23:29:01.32ID:pGuHKfo1
>>763
スピード気にしなければあっさりでる
0765名前は開発中のものです。2012/04/25(水) 02:07:39.33ID:acmC8sSv
>>717
スプライトクラスにある
SetTexture()や
DrawArray()の呼び出し回数を少なくすればいい。

Sampleを改造し、
パフォーマンスカウンタとにらめっこしながら、
最適化していけ。
プログラムのよい練習になるよ。
0766名前は開発中のものです。2012/04/25(水) 02:16:49.05ID:ntT8F2AJ
サンプルのSpriteクラスだとUV値が0,1で全体画像になってるから
Sprite描画前にSetTexture改造した関数呼び出して
描画の都度UV値指定して頂点確保、描画終わったら頂点開放ってのを繰り返すようにしたんだけど

これはまずいって事?
あらかじめアニメパターンの数だけ頂点バッファ作っといた方がお利口さん?
0767名前は開発中のものです。2012/04/25(水) 02:20:04.16ID:/Z5WcVYB
>>766
1枚の画像にアニメパターン並べて置いて、
シェーダの uniform変数に UV値渡して、描画内容変えていくとかがスマートじゃね

0768名前は開発中のものです。2012/04/25(水) 02:30:03.36ID:ntT8F2AJ
>767
なるほど
シェーダ難しそうだし出来れば固定機能のように作りたいと思ってたけど
スプライト用にUV渡せるシェーダ描いとけば応用利くようになるしやっといた方が良さそうなんね
ありがとうー
0769名前は開発中のものです。2012/04/25(水) 08:48:58.56ID:zMqLQVrI
質問なんだけどHighLevel.Modelって自分でシェーダー書くときも使えるの?
使い方ワカンネ
0770名前は開発中のものです。2012/04/25(水) 10:20:04.95ID:6tWPV+mt
BasicProgram ってやつを使うんでないかい試してないけど。draw()に指定あるし
0771名前は開発中のものです。2012/04/25(水) 13:52:48.72ID:4KDx0KgU
これって、ソースファイル配ってテストしてもらおうとした時に
ファイルに製作者の情報(アカウント名とか)付加されてたりする?
コード内には見当たらないけどファイルの属性的な部分に付加されてたりするのかなあ?
思って。
0772名前は開発中のものです。2012/04/25(水) 13:55:55.58ID:Z/dksGjZ
自分のところで動けば余所でテストプレイとかいらなくね?
そのために動作端末絞ってるようなもんだし
0773名前は開発中のものです。2012/04/25(水) 14:02:13.73ID:/Z5WcVYB
>>771
UnixやLinuxだと、ただのテキストだろうと所有者(ユーザ)の情報はあるけど、それしてもその辺は
システムが別に持つ情報なんで、対象ファイルそのものに書かれてる訳じゃない。
ましてWindowsだし、って感じ。
ただ,NETバイナリには書かれるけども。

あと、プロジェクトファイルなどまで含めるつもりなら、普通にファイル内に書かれてるかもしれないので、一応grepでもしてみりゃおk。
0774名前は開発中のものです。2012/04/25(水) 14:05:17.79ID:/Z5WcVYB
>>772
Windows用アプリを作るわけじゃないもんな
むしろ完全に特定環境向けだから、そうだよな
0775名前は開発中のものです。2012/04/25(水) 14:10:17.78ID:4KDx0KgU
>>773
ありがとうございます。プロジェクトファイルも含めた全てのファイルのテキスト内には見当たらないのでだいじょうぶかな。
0776名前は開発中のものです。2012/04/25(水) 14:24:51.27ID:H+99f8zj
/**
* クラス名
* @author あなたのお名前
*/
0777名前は開発中のものです。2012/04/25(水) 14:32:28.33ID:/Z5WcVYB
>>776
会話の意味わかってないのか
0778名前は開発中のものです。2012/04/25(水) 14:35:32.33ID:/Z5WcVYB
>>775
ignoreCaseな状態でgrepして無きゃないよ
テキストファイルだけならば
0779名前は開発中のものです。2012/04/25(水) 14:45:28.17ID:8gnIaxdE
>>776
ビルドしたバイナリに署名的なものが入れられるかっつーことでは?
jarのmanifestファイルみたいなもの?なのかな?よく分かってないけど
0780名前は開発中のものです。2012/04/25(水) 14:59:19.62ID:h2qBSQz5
>772
動作端末というか、意図しない操作をしてくれるかもしれないテストプレイとかは配布してやってもらいたい。

プロの人はどうやってるか知らないし、PSSじゃないけど
以前カクゲー+エディタ作った際にヒットストップ中も移動値に重力加算され続けて
ヒットストップが切れた瞬間に蓄積された移動値が反映されてすげぇ吹っ飛び方するっていうアホな事やらかした。
自分でテストした時には空中ダメージは空中コンボからやるからいつも同じくらいの上昇状態からダメージ入るから気付かなかったけど
対戦しまくって初めて気付いた。

シンプルなミニゲーム的なのだったら動きゃなんとかなるけど
攻撃移動値とかパラメータ色々ぶっこんで動作が変わるようなゲームだと
色んな動作テストしないと不安だわ。
0781名前は開発中のものです。2012/04/25(水) 15:15:38.58ID:6tWPV+mt
スト×鉄拳のことかー
0782名前は開発中のものです。2012/04/25(水) 15:38:38.79ID:8gnIaxdE
でもソース渡すのは嫌がる人多そうだよね
なんか配布の仕組みあるといいんだけど
0783名前は開発中のものです。2012/04/25(水) 16:22:52.17ID:WcbaTfjZ
配布前はソニーで端末チェックするんじゃないの
ソース公開するならGitリポジトリでやっちゃえば
0784名前は開発中のものです。2012/04/25(水) 21:15:38.72ID:/Z5WcVYB
ふと思ったが、これってさ、ビルドした後 bin/Release 下の物を丸ごと渡せば、
PSS環境入ってる所なら実行出来るのかな
何がやりたいかと言うと、PlayStation 実機向けじゃなくて、Win上で単に動作させるって事。
意味があるかどうかは置いといてww
0785名前は開発中のものです。2012/04/25(水) 21:34:20.77ID:acmC8sSv
>>784
多分できる。
0786名前は開発中のものです。2012/04/25(水) 21:46:03.32ID:qKSMdXes
ソリューションを開くときに
サンプル等のあるライブラリのドキュメントだけ何故か何も表示されない
デスクトップやダウンロード等他のフォルダは問題ない
クローズド期間のときは問題なかったしのになんだろうこれ
とりあえずパスを直接入力すれば開けるっぽいけど不気味だ
0787名前は開発中のものです。2012/04/25(水) 22:03:28.29ID:/yWdRGS0
実行だけならIDE起動しなくてプロジェクトファイルがなくてもSCE\PSS\target\win32\pss.exe を実行すると
実行ファイル名と実行ディレクトリを入力しろと出るのでexeのフルパスとexeのあるフォルダを
指定してやればエミュレーターが動く
エミュレーターでの実行はbin\Release\プロジェクト名-unsignedのほうで動く
0788名前は開発中のものです。2012/04/25(水) 22:06:20.39ID:/UepFVGr
パソコン上だと早いのにVita上だとUI表示されるまですごく時間かかるorz
ローディングとか入れないとだめか…
0789名前は開発中のものです。2012/04/25(水) 22:12:02.80ID:acmC8sSv
>>786
オープンβから
サンプルの配置場所が変わったからじゃ?

C:\Users\Public\Documents(Win7の場合)
のほうを見てる?
0790名前は開発中のものです。2012/04/25(水) 22:29:16.99ID:qKSMdXes
>>789
バージョン違いで置き場変わったのは知っているがドキュメントのフォルダを開いても空白になるんだ…
パブリックでもユーザーのDocumentフォルダでも同じ
へんに容量喰ってるわけでもないし、旧バージョンのPSSフォルダ移動してみたりしたが変わらん
そのうちフォーラムに垂れ込んでみるかねえ…
0791名前は開発中のものです。2012/04/25(水) 22:47:47.34ID:/Z5WcVYB
>>785 >>787
ありがとう! 自分で試してみれば良かった。
試しに、>>787 のヒントから、

 1.適当な場所にディレクトリ作る
 2.\SCE\Pss\target\win32 下の全てのモジュールを 1以下にコピー
 3.<プロジェクト>\bin\Release\<プロジェクト>-unsigned 下を 1以下にコピー

で、全てまとめて、

 4.1のディレクトリに適当なバッチファイル作成。 ※例として run.bat
   中身はこの1行

   pss.exe %~dp0\Application\pssapp.exe

 5.後は run.bat を叩くと、そのまま実行おk
 6.1の内容まるごと zip にまとめて誰かに渡せば、そのまま動く、と。

最終的なディレクトリの様子: http://wktk.vip2ch.com/vipper0531.jpg
0792名前は開発中のものです。2012/04/25(水) 23:02:12.84ID:/Z5WcVYB
ちなみに、試しにリフレクタで覗いてみた所、案の定、
pss.exe は ネイティブアプリケーションだけど、
Application 下の pssapp.exe は、素の .NET なので、ソースコード丸出し状態であった

で、多分 pssapp.exe の方、中身はデフォルトのテンプレだけだけど、ファイルサイズが 4KB しかなかったので、
多分ホストアプリにあたる pss.exe から、Sce.Pss 系パッケージのライブラリ実行が補完されると予測
=実機に渡された場合、丁度同じ仕組みで、実機側のホストアプリが実行する、みたいな階層か。

なんとなく構造見えた
0793名前は開発中のものです。2012/04/25(水) 23:12:23.50ID:/Z5WcVYB
そして .NETバイナリである pssapp.exe 側をバイナリレベルで覗いてみた所、
VC# のデフォルトのような、ローカルディレクトリパスやオーナの情報なんかは含まれて居なかった
※Release版

…ただし、これらの1パッケージを zip でまとめて Web上で配布みたいな行為しようとした場合、
pss.exe だけ除外しなきゃいけないかもしれない。 ライセンス的な意味で。
他の DLL は Sony のプロプライエタリじゃないから OKなはず。
0794名前は開発中のものです。2012/04/25(水) 23:33:21.94ID:M8Od9w0C
ソニーのAndroidウォークマンってこれに対応してるの?
0795名前は開発中のものです。2012/04/25(水) 23:44:36.91ID:T+88jPwQ
>>793
乙乙
0796名前は開発中のものです。2012/04/26(木) 00:27:12.17ID:Vzm3mGXP
>>794
Androidウォークマンかどうかは知らないが、
\SCE\Pss\tools 下に、psslauncher.apk はあるな。 apk = Android用のアプリケーションパッケージ

試しに、コピーして拡張子を zip に変え、中身を覗いてみると、
普通に AndroidManifest.xml がいるので、同じ拡張子の別物ではなく、とりあえず Android用のランチャだろうと予測。

その奥を覗いてみると、lib/armeabi の下に、上で書いた win32 版と同様、
monosgen、zplatform なんかのライブラリが鎮座してる。 assets/ 下には、psslauncher.zpak ファイルもある。
ただし、これらは Sony による製作の Androidアプリっていう立ち位置だと思うので、
勝手に使って言いわけは無いと思う。 利用方法については、追いかけ中止。シラネ。
0797名前は開発中のものです。2012/04/26(木) 00:33:35.10ID:Vzm3mGXP
あと、上 >>791-793 に書いた内容の追記。 注意事項。

今ライセンスを日本語訳しながら確認してるけど、それ以前にとりあえず、
win用 に zip でまとめなんて時、pss.exe だけ除外じゃ確実にNGと思われ。

何故なら、 \SCE\Pss\source 下に、よく見ると Physics2D や Model、GameEngine2D、UI なんかが
C#ソースの状態で置かれている。 つまりそれらのライブラリは、pss.exe にバイナリで持たれてるんじゃなく、
C# 上でソースレベルライブラリとして位置づけられてる予感。

だとすると、コンパイル後、.NETバイナリである pssapp.exe 側に、これらの 「Sonyが書いた物そのもの」 が
自分で書いたコードと同じ高さで含まれちゃうから、配布出来ない。

つまり、実質、配布は、出来ない。 Sony製でない各種DLLだけ配布しても意味無いので、
結局結論として=出来ない になると。


重要事項と、状況からの判断、以上。
0798名前は開発中のものです。2012/04/26(木) 01:04:18.15ID:QuIRGnUc
ああら残念
他の人に試してもらおうとしたら
ソースまるごとしかないのかしら

イリーガルなことはやりたくないしなぁ
0799名前は開発中のものです。2012/04/26(木) 01:29:21.33ID:Vzm3mGXP
>>798
うーん、その話で言うと、揚げ足取りみたいな事したらいけるか?とも思ったけど、
そもそも無理かもしれない。

揚げ足取りみたいな方法ってのは、例えば SCE コンフィデンシャルなソース部分を静的に利用せず、
例えば \SCE\Pss\source 以下にある内容を、各自の環境で一旦 「.NET DLL になるように丸ごとビルドしてもらって」
自分の環境でも同様に .NET DLL としてビルドして、それを、参照する形で自分のコードを書き、実行するようにしたとすると、
(もしもそれが可能ならば) pssapp.exe 側には Sony のプロプライエタリが含まれない格好になるので、

コンフィデンシャルなライブラリのDLL、pss.exe の2つを含まないならば、配布しても問題無いかもしれないが…
しかしそれ以前に、

FAQ
http://www.playstation.com/pss/developer/openbeta/faq_j.html
>無料のゲーム/アプリを開発しても良いでしょうか?
>有料(フリーミアム含む)の開発に限定させて頂きます。

と、あるので、「試してもらう」 は、この話に該当するから、NGかな。 同じ意味で、ソースレベルだったら?は、
もうフォーラムなりSCEに直接なり、聞くしかないと思う。 あと同様に、上の 「外出しDLL化」 で、それを配布しない場合、とかも。
0800名前は開発中のものです。2012/04/26(木) 03:07:03.31ID:uEigsJFJ
駄目だ、どう頑張っても2Dスプライト200個程度で処理落ち始まるもう寝る
0801名前は開発中のものです。2012/04/26(木) 03:08:15.84ID:j5CdoPyz
SDKだけは自前で公式から落として入れてもらえばいいでしょ
0802名前は開発中のものです。2012/04/26(木) 08:38:12.90ID:Vzm3mGXP
>>801
むしろそれじゃ足りなくてって話
>>797 >>799
0803名前は開発中のものです。2012/04/26(木) 08:45:14.90ID:NZhRCtp4
足りなくてっていうか
SDKだけ落としてもらって、友人にはソース渡せばあとは相手の環境でビルドするだけじゃないの?
0804名前は開発中のものです。2012/04/26(木) 09:04:29.89ID:r5tYGBBU
>>799
それはPSStoreの話でSDKとは関係ないと思われ
俺はソース丸ごとMITライセンスで公開する予定

0805名前は開発中のものです。2012/04/26(木) 09:21:28.33ID:Vzm3mGXP
>>803ー804
ソースだけなら正直いけそうとは俺も思うけど、一応、本当にいいよね?と聞いた方がすっきりするかな?程度の話で、
上の話はバイナリの話。

>>801 のレスは、SDK落としてもらえばいいだけでしょ、としか書いて無かったから、
例えばランタイムだけ自分で調達してもらって、ビルドした.NETバイナリは渡す、みたいなケースを考えてたらマズいので、
足りないって話。その事を上で書いてるから、安価してるってこと
0806名前は開発中のものです。2012/04/26(木) 09:56:27.37ID:EbGDOn43
PSSuiteSDKの参照ページで検索かけるときに「Search」が消えないのが地味にイラッとする
0807名前は開発中のものです。2012/04/26(木) 10:02:59.86ID:Vzm3mGXP
あぁ、あと、ソースレベルなら大丈夫だろうと思うけど、一応聞いた方がって慎重になってる理由は、今のとこ2つある。

ひとつは、開発環境インストールすると付いてくるAPIドキュメントについて、
フッタやそこらにコンフィデンシャルと記述があること。
これが、例えばドキュメントそのものをパブリックな場所で公開はダメってのは当然として、
その意味する所はどこまでか、って話が見えないから。

普通、こんな社内ドキュメントに書くような強い言葉は使わないので、気になる。ってのと、

もうひとつはライセンス条項にある限定性の前提と知的財産権の行使を会わせた時の解釈。

まだ全部訳してないけど、なんか公式フォーラム以外で色々した場合、怒られるのかどうなのかが微妙。

だから、おkじゃないの?とは思うけど、一応聞いた方がと思った次第
Oracle社やHP社の製品扱う時みたいなイメージで、一応念入りに見てる俺
0808名前は開発中のものです。2012/04/26(木) 10:09:37.14ID:QuIRGnUc
>>807
乙過ぎです!

フォーラムでソース配布しないで
他の人に試してもらう仕組み的なものを用意しないのか聞いてみようかな
0809名前は開発中のものです。2012/04/26(木) 10:16:54.44ID:r5tYGBBU
Confidencial指定はクローズドβの時の名残だと思われ
(クローズドβの時はソースも含めてSCEIが許可した場合を除き配布できなかった)
今はソースもバイナリも勝手に配布してOKなはず
0810名前は開発中のものです。2012/04/26(木) 10:41:55.42ID:Vzm3mGXP
>>809
それマジかい。どこかでその旨アナウンスされてた?
バイナリまでっての、例えば上の方に書いたzipに1パケでまとめて、ってのもおk?

記憶だけの話なら、Sonyに一応聞いてみけど
0811名前は開発中のものです。2012/04/26(木) 12:34:54.74ID:RP6WfnsV
うーむsamplerを配列にして一回のドローコールで完了だぜヒャッハーは無理なのか
ifで判定するのはペナルティが無いんだろうか
0812名前は開発中のものです。2012/04/26(木) 12:37:02.11ID:Vzm3mGXP
>>811
それはエスパーすると、>>767 の話か
0813名前は開発中のものです。2012/04/26(木) 12:46:27.14ID:RP6WfnsV
>>812
TEXUNIT0:プレイヤーのテクスチャ
TEXUNIT1:背景のテクスチャ
TEXUNIT2:弾のテクスチャ
TEXUNIT3:敵のテクスチャ
TEXUNIT4:ボスのテクスチャ
TEXUNIT5:エフェクトのテクスチャ
を割り当ててtex2D(tex[index],uv.x,uv.y)をやりたい。
これなら違うテクスチャ使う場合でも同じ頂点バッファにできるから
はやいかなーと
0814名前は開発中のものです。2012/04/26(木) 17:26:13.51ID:Vzm3mGXP
>>813
ん?シェーダの考え方的になんか変じゃねそれ。

それら複数のテクスチャって、ひとつのメッシュで全部に同時に必要なの?
あるひとまとまりのメッシュ=VertexBufferに並ぶ一連のプリミティブ(トライアングルとか)を描画するのに必要な情報を渡して描画する、その
パイプラインに置くのがシェーダだけど、

もしもその例にあるテクスチャが個別なら、配列に持たすんじゃなくて、ひとかたまりのメッシュ描画するごとに、テクスチャ生成時のID、
OpenGL的にはnameなんて言い方するが、IDをコンパイル済みシェーダプログラムに、渡す格好になると思う

シェーダ使ったプログラム、今回が初めてか?PSSに限らず
0815名前は開発中のものです。2012/04/26(木) 17:32:06.71ID:Vzm3mGXP
あ、もしかして
>これなら違うテクスチャ使う場合でも同じ頂点バッファにできるから
>はやいかなーと

複数のモデルを一つのVertexBuffer一本に全部つめてまとめて描画したいってことか?
つめてもいいけど、オフセットしながら、シェーダに値渡しながらDrawじゃなくて、
一回だけの呼び出しでって
それメリット薄い気がするが、もしかして描画時に毎回バッファ作成してGPUに送り込んでるとかしてないよな?
0816名前は開発中のものです。2012/04/26(木) 17:42:35.03ID:r5tYGBBU
何をやりたいのかよく分からんな
Cgはまったく知らないけどただのマルチテクスチャーなら普通に出来るでしょ

0817名前は開発中のものです。2012/04/26(木) 18:02:16.86ID:Vzm3mGXP
>>816
マルチテクスチャ自体はいいんだけど、俺も考え方的に違和感
あとちなみに、PSSはGL"ES"ベースのCgのようだぜ。制限範囲把握してないけど
0818名前は開発中のものです。2012/04/26(木) 18:13:14.85ID:RP6WfnsV
スプライトの描画おそいから一つの頂点バッファに全部いれて
一回のDrawArraysにすればはやいかなと。メッシュとか数千ポリでも余裕じゃん。
でもテクスチャ足りないからマルチテクスチャ使えないかなーって思ったの。
VRAMバンクみたいなの感じ?
0819名前は開発中のものです。2012/04/26(木) 19:26:22.06ID:Vzm3mGXP
>>818
で、個別の板ポリそれぞれについて、n組の変換行列渡すか、またはn組の頂点オフセット値を 配列uniform 使って渡して、attributeでインデクス渡して特定して描画って格好か
VertexBufferは予め最大幅確保して。

いやパンクは無いだろうけど、テクスチャって言うより、そもそも
uniformに渡せる配列 の最大幅には、ハードウェア依存の制限あるけと思うけど
=その方法で一度に個別な板ポリ描画しようとすると、同時に扱える仮数に制限あると思うけど

その辺収まるの?やりたい内容的に
それとも座標は固定なの?
0820名前は開発中のものです。2012/04/26(木) 19:27:58.35ID:Vzm3mGXP
スマホtypo炸裂した
×仮数
○個数
0821名前は開発中のものです。2012/04/26(木) 19:40:00.25ID:uEigsJFJ
DrawArraysの回数を数百回から数回に減らしてみた
速度変わらなかったw
0822名前は開発中のものです。2012/04/26(木) 19:42:07.92ID:Vzm3mGXP
別にそのタイミングで転送がある訳じゃないからな
0823名前は開発中のものです。2012/04/26(木) 19:47:01.38ID:UmLm2LQZ
GraphicsContextのスプライトの登録数って4096が最大か?
4096個以上だとプログラムが落ちるんだが……
0824名前は開発中のものです。2012/04/26(木) 20:02:52.18ID:RP6WfnsV
>>819
uniform配列は使わないで毎フレーム頂点バッファに書き込もうかと
配列使えないから意味ないんですがね

// fcg
void main(
float4 out color : COLOR,
float2 in uv:TEXCOORD0,
int in index:TEXCOORD1,
uniform sampler2D tex[] : TEXUNIT // これを配列にしたい
)
{
color = tex2D( tex[index], uv);
}
0825名前は開発中のものです。2012/04/26(木) 20:03:30.54ID:RP6WfnsV

// C#側


struct Vertex
{
float x,y,z,w;
float u,v;
int index;
};
struct Sprite
{
Vertex v[4];
};

// スプライトバッファ
Sprite sprite[1024];
sprite[0].v[xxx].index = 0; // playerTexを使用する
sprite[1].v[xxx].index = 1; // bgTexを使用する
sprite[2].v[xxx].index = 0; // playerTexを使用する

// 登録したスプライトを元にして頂点バッファを作成
vtx = CreateVertexBuffer(sprite);

SetVertexBuffer(vtx);
SetTexture(0,playerTex);
SetTexture(1,bgTex);
DrawArrays(sprite,n);
0826名前は開発中のものです。2012/04/26(木) 20:18:21.13ID:Vzm3mGXP
>>824
それ、CPUーGPU間の転送動作とか、その辺わかってて書いてるかい?
あと、上の方でも書いたけど、PSS環境以外で書いたことはあるかい
普通、そういう猛烈なコスト無視なコード書かないと思うけど
08278242012/04/26(木) 20:56:09.52ID:7cNkZwNQ
>>826
DirectX9あたりまでなら作ったことがあります。
弾の座標なんて毎フレーム変わっちゃうんで
システムメモリにVertexBufferつくってLockして毎回設定してたんですが
今はやり方ちがうんですかね
0828名前は開発中のものです。2012/04/26(木) 21:09:27.18ID:Vzm3mGXP
>>827
いやいやDirectX9でもプログラマブルシェーダ使う前提だとか、VertexBuffer使うって話であれば変わらないよ
要はCPUーGPU間の転送って言う基本的で物理的な事情に由来する話だから、

例えば「早くしたい」って事情なら、真っ先にそこ回避したいところ

もっと昔だと、Cライクな構文のシェーダ言語はなかったので、GPU側の機械語で計算処理書いて、予め転送した頂点計算したりしてた

その辺、そこまで要件がタイトじゃないとしても、毎フレーム生成は真っ先に避けたくなる所だよ
それは昔から変わらない

なので、昔の本でもいいから、基礎から勉強しなおしした方がいいと思う。
処理効率的な意味で。別にいじわるで言ってるわけでなく、マジで。
0829名前は開発中のものです。2012/04/26(木) 21:11:36.56ID:Vzm3mGXP
>>827
あと、その毎フレーム座標変わっちゃうんで、だろうと思ったから、
先に >>819 のレスを書いてるのだ
意味がわかんなかったら、聞くか調べておくれ
0830名前は開発中のものです。2012/04/26(木) 21:12:58.20ID:7cNkZwNQ
うーんムズカシイのう
0831名前は開発中のものです。2012/04/26(木) 21:27:12.64ID:7cNkZwNQ
ParticleSystemは毎フレーム座標の設定をしてるみたいだけど
毎フレーム変更するならImmediateModeを使えばいいんだろうか?
0832名前は開発中のものです。2012/04/26(木) 21:40:11.96ID:Vzm3mGXP
>>830
とりあえず、週末になったら
Sprite2D使った場合と、
毎フレーム頂点の生成廃棄と転送繰り返す場合と、
シェーダ使った意味的に普通のコードの場合

で、速度検証のコード俺も書くよ

0833名前は開発中のものです。2012/04/26(木) 21:56:28.50ID:Vzm3mGXP
>>831
パーティクルだと実装手段180度違うような方法色々あって、一概に言いづらい
ってのは、例えばポイントスプライト(新しいDirectXだと消えたらしいが)だとか、普通にポリゴンだとか、色々方法あるから。

ただ、いずれも描画のための頂点座標計算はCPUでやらないで、シェーダ側で計算するのが普通だけど、
その元になる係数なんかについてはCPU側で計算して、それを、
uniformやattributeで渡して、みたいな格好。

あとバッファをLockやUnlock、map/unmapしてCPU側管理下のメモリに内容展開して計算して詰め直し、GPU側に再転送みたいなアプローチは、初期処理は当たり前として、
それ以外だと例えば、場面替えの時とか、あるいはゲームじゃなく
3Dモデリングソフトを作るだとか、そういう「やってもいい時にだけ」する感じ
0834名前は開発中のものです。2012/04/26(木) 22:48:58.96ID:7cNkZwNQ
これSpriteList->SpriteRenderer->ImmediateModeQuad
でSprite描画はDrawごとにVertexBufferにsetVerticesやってるっぽいな…
0835名前は開発中のものです。2012/04/26(木) 22:59:39.10ID:7cNkZwNQ
標準ライブラリだからはやいと思ったがそうでもないみたいだな
弾幕シューティングは無理か
■ このスレッドは過去ログ倉庫に格納されています