PlayStation Suiteプログラミング part 1
>>951 shader_.SetUniformValue(1, ref pos);
shader_.SetUniformValue(2, ref tex);
の2つだけにしましたがやっぱり遅かったっす
まとめてやならいと遅いっぽいんですが、
ちょっと関数がバグってるみたいで使えなかったっす
バグってなかったら8x8サイズのスプライト、7800個達成っす
頂点配列はこう定儀して
struct Vertex
{
public uint pos;
public uint color;
public uint uv;
};
こうセットしたら速くなるっす
o.v0.pos = (uint)(t<<16 | l);
o.v0.uv = (uint)(v<<16 | u);
o.v0.color = color;
ゲーム開発初心者の自分にとってとてもありがたいスレ
やっとブロックくずしwが形になってきた
あれだな、ELだと60フレが冴えるな
最強のホビーパソコンといわれたX68000の
スプライト機能が最大同時128枚(水平方向32枚)だったんだから
いい時代になったな・・・
あの時代のゲームは疑似回転でどうのこうのとか
やたらと持て囃す人たまに居るな
WinG辺りで頭が止まってるので追いつくのに大変だわ(´・ω・`)
>>954 ビルド実行してみたが、真っ黒の画面と左上に文字列がでるだけだよ。
>>954 実機では問題なくうごいてます
size=8 cunt=100でfpsは36~38をうろうろ
>>961 >>954 これって、実機じゃないと動かないの?
posがshort2で、color.vcgのa_Positionがfloat4になってて、
よくわからんかったが、実機用の最適化か何かですか?
>>960 アップロードしたソリューションをVITAで動かしてるんですが
動作してるっす。エミュで動かないのかないバグか?(´・ω・`)
>>961 すいませんsize=8は2^8で256x256っす
size=3が8x8っす
>>963 ストリームにfloat3渡しても、vs側でfloat4で取れるんで
足りない部分の補完と変換はやってくれると思ったんですが違うんすかね?
>>965 次元の追加はやってくれないと思うよ。
vcgの宣言を2次元にして、
float2 in a_Position : POSITION,
掛け算のとこを修正して、
//v_Position = mul( a_Position, wvp);
v_Position = mul( float4(a_Position,0.0,1.0), wvp);
この修正でwin上では絵が出たよ。
>>966 むむ、ありがとうございます。
でもサンプルではfloat3でやってるんですよねぇ。
short2だからマズイんだろうか…
>>967 たしかにサンプルは次元があってないね。
なぜか偶然うまくいってるだけだと思うけど。
ところでPSSで扱えるシェーダって、Cg だと思ってて、ドキュメントにもそう記載されてるんだけど、
もしかして普通の Cg じゃない? 構造体使った in/out が出来ない。main プロシージャの引数に並べないとダメ?
>>969 上の方でGLSLにトランスレートしてるとか書いてる人がいるから
CgからGLSLに変換してるんじゃなかろーか
GLSL や Cg の予約語と、同じ名前の変数や関数は使用できません。
一部の予約語は case-insensitive であり注意が必要です (Texture, Matrix, Vector など)。
vertex shader の出力と fragment shader の入力には、セマンティクスの指定が必要です。
vertex shader の出力と fragment shader の入力は、名前とセマンティクスの両方が一致する必要があります。
fragment shader の出力には、COLOR セマンティクスの指定が必要です。
一つのシェーダー内で、重複する TEXUNIT セマンティクスは使用できません。
一部のセマンティクスでは、変数の型が制限されます (NORMAL, PSIZE, FOG など)
ループの反復回数の最大値は、定数である必要があります。
ループの反復回数を制御する場合は、break 文でループを中断してください。
attribute, varying, sampler 変数の配列は使用できません。
uniform float2/3/4 の xyzw への、uniform int による配列アクセスは使用できません。
uniform float4x4 の columns への、uniform int による配列アクセスは使用できません。
スカラー変数に対する swizzle は使用できません (f.xxxx など)。
PSIZE がない場合、varying 変数は 8 packed vectors まで使用可能です (POSITION を除く)。
PSIZE がある場合、varying 変数は 8 vectors まで使用可能です (POSITION, PSIZE を除く)。
マニュアルには構造体は使えないとか書いてないけど
971 :
名前は開発中のものです。:2012/04/29(日) 20:52:55.77 ID:XVpEt3Gn
>>953 >バグってなかったら8x8サイズのスプライト、7800個達成っす
弾幕シューティング、いけそうだな。
PS Storeに東方の同人ゲーが溢れる日も近いw
なんか出来ないっぽい。ShaderConverter に拒否られる。以下のような方式はNGらしい。
struct VIN
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
struct VOUT
{
〜略〜
};
VOUT main(in VIN vi)
{
〜略〜
}
>>970 ありがとう、あぁやっぱ雰囲気からして、やっぱ最終的に GLSL になるのかな。
てことは、HLSL に似た Technique / Pass の制御、確か Cg では使えたと思うけど、
それも無理かも。未確認だが。 てかむしろそれなら最初から GLSL のつもりで書いてくかな
PSS でのマルチパス関係調べてみるか…
PSSuite SDKのドキュメントは日本語版もあるし、解説も丁寧ですね。
SDKロードマップ通りに今後APIが追加されたらゲーム以外のアプリも期待できそう。
カメラと位置情報周りが楽しみ
次の最適化はフレームバッファの解像度と色数変更なんですがなんかバグってるっす。
フォーラムで質問してる人がいるんで次のアプデまで保留っすかね。
弾幕STGなら480x272のRenerTarget作って描画がいいんすかね?
描画の最適化
フレームバッファに書き込めるpixelは12MB
Zオクルージョンで同一ピクセルの上書きをしない?
しかしアルファ部分はどうする?
っていい方法ないっすかね?
>>975 せっかく検証したんだし
それも報告したらどーすかね?
βなので向こうも情報多い方が助かるだろうし
>>977 PSIDばれちゃうんで何か恥ずかしいっす
てか英語わからないんで…
誰か報告してくれたありがたいっす
PSS用のアカウント作ればいいだろ
PSIDなんてメアドさえあればいくらでも作れるのに
フォーラムは日本語OKだぞ
どこ見ても英語なんだが…
というか、"コミュニティラウンジ"ができてるな。
>>981 Form > PlayStation Suite Developer Forums > General > コミュニティラウンジ
過去に DirectX9以前、OpenGLの3未満の経験がある人向け、一言メモ。
DirectXやOpenGLでも、新しい版では固定パイプラインは消えたかレガシー化したけど、
PSSのシェーダアプローチも同様。
つまり、射影変換行列やライト、マテリアルなんかの、最終的に描画するピクセルの位置や色の決定に関わるものについて、
コアエンジンへ伝達する規定の方法は無くなった。
最終的な仕組み上は元々そうだったけど、規定の関数に隠されて、それ越しに設定してたそれらは、
もっと単純に自分でシェーダ書いて送り込む形に整理された。
ただしその代わり、それら過去のアプローチの代替になるものが、BasicProgramクラス にまとめられてる。
このAPIクラスが、過去の固定パイプラインだったものそのもの。
なので、自分でシェーダ書かずに、とりあえずなにか描画したい人は、これを利用すること
メモは以上
>>986 それも確かに一案だと思うんだが、ただ、今の状態って、俺もそうだけど他の人、"っす" の人とかも、
APIについて色々調べたりしてる段階で、だからこんな話が続くけど、この先ある程度見えてきたら
最終的にはゲーム類作りたいワケだったり、
その内キャラクタモデルやアニメーションデータ、音声その他の話に展開するかもしれなくて、
その辺考えると、 ゲーム製作って元々プログラミングだけでなく、その辺全部含む物だから
どっちかなぁ… と、ちょっと迷う感じ
>>954 onDrawでDrawArraysがnumOf回呼んでるのを、
vertexBufferをnumOf個分用意して
そこにスプライトの格頂点を貯めていってから
DrawArraysを一回だけ呼ぶようにすれば
百万スプライトくらいかけるようになるはずなので試してみて
drawArraysはめちゃんこ遅いので。
989 :
名前は開発中のものです。:2012/04/30(月) 07:59:35.22 ID:3hLA/9ZQ
>>988 >vertexBufferをnumOf個分用意して
>そこにスプライトの格頂点を貯めていってから
まだ上にあげられたソース見て無いんだけど、そうなってなかったのか
>>988 Scene3.csはそうだけど、アクティブなのはScene2.csのほう。
992 :
名前は開発中のものです。:2012/04/30(月) 09:19:38.05 ID:0M2ibX2c
独自形式のファイルを扱うときに自動的に
/Application/にコピーされるようにする方法ってある?
>>989 ゲ制作技術でよかったのに...
俺が新しくここでpart2を立てるわ
995 :
名前は開発中のものです。:2012/04/30(月) 09:56:10.06 ID:0M2ibX2c
こんなところにあったんですね...
ありがとうございます
Openβの情報も入ったわけだしテンプレを纏めてから立てるべきだったんじゃないのか
だな
>>998 part 3に向けてテンプレ作成たのむ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。