OpenGL/Vulkanスレ Part22©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
クロスプラットフォームの3D API OpenGL 及び次世代のローレベルAPI Vulkan に関する話題を扱うスレッド。 現在の最新バージョンは4.5 https://www.opengl.org/ https://www.khronos.org/vulkan == OpenGLと一緒に使われるツール&ライブラリ == 苦労したくなかったらとりあえず入れとけ。 ・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない ・glut: クロスプラットフォームなツールキット。でもさすがに古くさい ・GLFW より新しいマルチプラットフォームなツールキット ・glew: これを入れないと拡張機能が使えないor使いにくい ・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで ・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。 ・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。 ・OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ ・OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ == チュートリアルサイト == 床井研究室: http://marina.sys.wakayama-u.ac.jp/ ~tokoi/oglarticles.html OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/ NeHe: http://nehe.gamedev.net/ Tutorials for OpenGL 3.3 and later http://www.opengl-tutorial.org/ Learning Modern 3D Graphics Programming http://www.arcsynthesis.org/gltut/ == 前スレ == OpenGLスレ Part21 http://peace.2ch.net/test/read.cgi/tech/1409581958/ == 関連スレ == 【O3D】HTML5用 3D API WebGL 【Canvas:3D】 http://peace.2ch.net/test/read.cgi/tech/1308761577/ OpenGL 2.0 専用スレ http://peace.2ch.net/test/read.cgi/tech/1126268759/ カメラの視線ベクトルも上ベクトルも、極座標変数θ、φから計算して常に直交するようにして与えてる。 FPSみたいなゲームだと真上を向くのは人間の首だからY軸と一定の角度以上には 上を向けないように制限してジンバルロックに対処してるのがほとんどだな 再度ジンバルロックについてお尋ねします。 軸が重なると言っているのは、初期姿勢のXYZ軸と、 回転後のXYZ軸が重なるということを言っているのだと思いますが、 2番目だけ90度だとマズイと言っていますが、 1番目を90度にしても軸は重なりますよね? 例えばXYZ軸の順で回転したい場合、 X軸をいきなり90度回せばY軸とZ軸は重なってしまうと思うのですが、 これはジンバルロックにならないのでしょうか? また、2番目を90度にしても、一番目を何度か動かせば、 初期軸と回転後の軸は重ならないと思うのですが。 XYZ軸の順で回転させる場合、 Xを45度回し、Y軸を90度回しても、回転後のX軸と最初のZ軸は重なりませんよね? 回転と考えるから理解出来ないんだよ 単にあるものを回転させてるだけならジンバルロックなんて起きない いわゆるジンバルを中のリングはいじらずにそのもの全体をぐるぐる回してるに過ぎない ジンバルロックというのは中のリングの内2つが同一平面上にある時の事を言う その状態は要するに2軸が完全に重なっている事を意味する そうすると残りのリングは一方向に回転するしかなくなり、向きたい方向に向け無くなってしまう これが厳密な意味でのジンバルロックだ。わかったか? 3軸が全て垂直を保ったままの回転はジンバルロックは起きない で、3D計算上でのジンバルロックというのはlookatのコードのように2軸から 外積を使って3軸目を求める時に2軸がほぼ重なってる時に向きがランダムな 状態になる事を言う AppleがWebGPUなる新APIを発表したが これ標準になるのかね? シェーダコードと頂点、テクスチャの無償寄付サイトになるな ソースコード公開されてたらタダだーと勝手にコピーして使っちゃう人? 610みたいな無知がいるから法律ってのは必要なんだよな WebGLはTyped Arrayの内容をいちいちアップロードせずにテクスチャやバッファとして使えないかとは思う VRAMが共有されてる環境ならコピー無しで使える しかしGPUが使用中のデータは書き換えてはいけなかったり GCがコンパクションでデータを移動しないようにメモリ上の位置を固定→パフォーマンスが低下するなど ややこしい事になるかもしれない >>609 バレて炎上してるのはこういう人が居るからか。 >>602 なんかジェットコースター宙返りのように反り続けていくとてっぺんで急に向きがくるんと変わっちゃうあれですよね。 Intelも新グラフィックスドライバでVulkanに対応 ttp://pc.watch.impress.co.jp/docs/news/1044145.html >>614 それはlookAtが宙返り対応してないで裏がえる現象じゃね >>612 BufferObjectをダブルバッファにすればGPUとCPUで並列処理出来るよ 実際にコピーしてるかどうかはドライバ次第だ Intelの内蔵GPUとかはコピーしてない気もするからな(実際のところは知らん) >>610 著作権表記がない場合は自動で付くんじゃなかった? スマソが、グローシェーディングとかするのに法線使うけど、 その場合、頂点と1対1にするの? OBJファイルでインデックス方式になってるのを、uv含めて展開するのが正しいのかな? >>619 最近だとテクスチャをダイナミックに更新したい場面が多い。 バッファオプジェクトのRO宣言って割りと意味ないと思う。 drawを非同期実装とかしないでしょ。 どうか教え下さい AndroidアプリでNDK側でOpenGLESでテスクチャ作ってるのですが、 それをJava側に渡してGLSurfaceViewで表示したいです readPixelsで配列データとして渡して表示はできたものの、遅すぎてゲームアプリとしては破綻していて。。。 どんな方法がベストでしょうか?やはり、コンテキストを共有するしかないでしょうか? ベストを探す前に素直にサンプルと同じやり方を試すべきだと思う そうしない理由があるのならそれを言わんことには サンプルってどれっすかね? 試すのは大丈夫なんですが、描画スレッド(Java側)と演算スレッド(NDK側)みたいな感じす スレッド跨いでEGLコンテキスト共有とか、知識あんまり無いです。。 Java側はGLSurfaceView使ってるので、単なるSurfaceViewに変えないとだめっすかね。。 >>631 レス遅くなってすみません シェーダー使うのもありですが、framebufferからreadpixelsする変わりにシェーダーで対応ってのがどうゆうことか理解できてません とりあえずNDK側でガリガリ作った画をJava側に60fpsで渡す方法があれば何でも試します スレッドがJavaとNDK側で別なんです そしてJava側はGLSurfaceViewなので、なおさらコンテキストは共通化できてないっす >>630 どれ?じゃねーよ NDK使ってるんだろ? 大丈夫なら試せよ >>636 ndk-bundleのソースフォルダのサンプルが使えるってことですか? 使えそうなサンプルは無いように見えますが。。 教えて下さい。 だから何で自分の流儀を前提にしている訳? あんたの流儀はあんたが一番知っているんだから 他人に聞くだけ無駄だよ こういう支離滅裂なアドバイス(?)する奴はなんなんだろうね?酔っぱらってんのか? Androidの事は知らんけど、単にコンテキスト間でリソース共有にすればいいだけだよね。 Windowsならできる。同様のAPIあるんじゃね。 http://d.hatena.ne.jp/orangesignal/touch/20120818/1345275541 これをぱっと見た感じGLSurfaceViewのgl.glXxxとNDK側のglXxxは同じコンテキスト使ってるっぽいからtextureID渡すだけで行けそうなものだけど 横からスマソ、 俺もアンドロイドのOpenGL弄ってるんだけど、 GLES20.glxxxがラッパー?で、上で言ってるglxxxがNDKとか言うやつ? サイトでよく出てくるサンプルはGLES20.使ってるけど、 そのNDKとやらを使うと速いとかなんかいい事あるの? >>641 VM介さないから処理によっては速度が全然違う ゲームとかはフルndkのほうがパフォーマンスが良い これ以上はAndroidスレで聞いたほうがいい Javaだろうと、NDKだろうとスレッド別なら全く別処理でテクスチャも何もかも共有できないよね? OpenGLESの知識は浅井ですが、自分の認識です↓ ttp://eaglesakura.hatenablog.com/entry/2013/12/28/235121 >>646 shared_contextは遅いの? >>632 遅いのはJAVAとかNDKとか以前にreadpixelじゃないの? >>648 そうです。 その代替案を探してるだけなんですが、描画と処理のスレッド別なので、テスクチャIDやフレームバッファを共有できない(EGLコンテキスト共有できない)と思ってましたが方法ありそうですね androidのことは詳しくないけどJava側のレンダリングスレッドからネイティブのレンダリング処理出すんじゃだめ? CPUは並列に動かせてもGPUは並列には動かないし、別スレッドに分ける意味余りないよね? レンダリングを別スレッドでやりたいわけじゃないでしょ。 並列で動いてるんじゃねレンダ要求直後VBO書き換えるとチラつく >>652 実装はAPIの関知する限りではない いわゆる未定義動作の類なのでは? 未定義つうか禁則じゃねVBO使わずにnioバッファの時は勝手に調停してくれてたんだが ほんと初心者で申し訳ないのですが、質問をお許しください。 現在、MAX/MSP jitterを使っているものです。 GLSLの勉強をしているのですが、例えばjitter側で生成した球に、 グローエフェクトをかけたい場合、どういう考え方でGSGLを記述したらよいでしょうか。 vvvvとかならグローエフェクト専用のノードで一発なのに、 MAXでシェーダを書く場合の例とかいろいろ検索しても出てきません。 質問自体もおかしなところがあるかも知れませんが、是非MAXの環境で 映像を作っていきたい理由があるので、どなたかご教示お願いします。 未定義は定義してないってことだね 禁則はやっちゃいけないってことだね 全然別の意味だね君の頭の中までは文句は無いよ 脳内の混同は取るに足らないありふれた事象だし >>657 プログラマは未定義動作をするプログラムを書いてはいけない事に変わりない。やっちゃいけないことだよ。 未定義動作とごっちゃにしているんだろうなと思ったら案の定。 未定義動作しても構わないよ そこに到達しないコードを書くのが基本 未定義動作なんて聞かない言葉だと思ってググったらバッファの初期化忘れのことかよ もしも初期化してなきゃ最初の1フレームは起きるかもしれないが件のは前のフレームと 次のフレームとの境目で起きると思われるちらつきだから未定義動作とやらでは無いわな WebGLだとセキュリティ上の理由でglMapBufferみたいな安全を保証できない機能は使用禁止 GTX1060(モニター@を接続)とQuadro4000(モニターAを接続)の2枚差し PhotoshopなどのOpenGL系でGTX側に接続しているモニター@を10bitカラー表示させることってでませんか? どのような効果が見込めるか分からなかったのですが、 NVIDIAコントロールパネル/3D設定の管理/OpenGLレンダリングGPU の設定ではグローバル設定→Quadro4000に変更してみました photoshopなら設定にあるけど他のソフトはソフトが対応してるかだからユーザーがどうこうできる問題じゃない >>664 つうかWebGL以前にglMapBufferはOpenGL ESにねーし GLESベースのWebGLに無くて当然 WebGL1.0でもテクスチャ使えば似たような事は出来る glewの2.0.0のVC10のglew.slnをビルドすると error LNK2019:未解決の外部シンボル memsetが関数 glewContextInitで参照されました と出てビルドできないのですが、どう直せばいいのでしょうか? ちなみにソリューションを検索しても「memset」の文字列は出てきませんでした。 VAOで描画する時ってglBufferSubDataとかで毎フレーム頂点データを書き換えるような場合は使えない? VAOって何よ GL_DYNAMIC_DRAW指定しとけ glslのIDEとかってないですか? vulkanで使うのですが 人とAIの共存を主とする「Google PAIR」、機械学習(NN含む)をブラウザ上で全て実行できるWebMLライブラリ「deeplearn.js 0.1.0」をリリース http://shiropen.com/2017/08/12/27359 人を中心としたAIシステムの研究と設計をするGoogleのプロジェクト「The People + AI Research Initiative(PAIR)」は、 ブラウザ上で機械学習(Machine learning)を全て実行できるオープンソースライブラリ「deeplearn.js 0.1.0」をリリースしました。 本ライブラリは、可能な限り多くの人に機械学習を開かせたいという思いのもと開発されました。 その為、インストールやバックエンドなし、ブラウザ上で全て実行できる仕様になっています。 今までもWeb Machine learning(WebML)ライブラリは存在していましたが、 Javascriptの速度によって制限されていたり、 訓練ではなく推論に限定されていたりしていました。 一方で、deeplearn.jsは、 WebGLを利用しGPUで計算することで大幅にスピードアップさせ、 またニューラルネットワークを学習させる際に用いられるアルゴリズムBackpropagation(バックプロパゲーション)機能も備わっています。 > 「OpenGL 4.6」が公開 > 「OpenGL 4.6」の仕様公開を発表した > OpenGL 4.5は2010年に登場したOpenGL 4系の最新版。 > OpenGL 4.5の仕様はプロジェクトのWebサイトで公開されている。 Androidで動くVulkanとOpenGLESの比較できるベンチマークアプリ知らない? >>679 スラドのhylom OSDNマガジンの末岡洋子 最新トップYoutuberの年収は10億円、1億円の時代はもう古い http://www.himatubushisp.com/entry/2017/05/10/224945 Youtuberヒカルが月収を明らかに!!おはよう朝日です出演 https://www.youtube.com/watch?v=RLZGrqQnnZc 第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ! https://www.youtube.com/watch?v=asF2wQ2xhjY& ;t=61s ユーチューバーの儲けのカラクリを徹底検証! https://www.youtube.com/watch?v=FUSb4erJSXE& ;t=504s 【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開! https://www.youtube.com/watch?v=Y7DAQ0RKilM& ;t=326s 誰も言わないなら俺がYouTuberのギャラ相場を教えます https://www.youtube.com/watch?v=E4q-vaQh2EQ& ;t=118s 最高月収5000万円だとさ。年収じゃなくて「月収」な おまえらもyoutubeに動画投稿したほうがいい 手っ取り早く視聴数稼ぐには有名ユーチューバーへの物申す系動画がオススメ しばたーやよりひとやkunやぽんちやモンスタージョンなどを真似すればいい AndroidでGLES2で実装されてるやつをVulkanに置き換えてみたんだが1/3(GLES2は45 Vulkanは15程度)しかFPS出なかった。(3D性能自体あんまりよくない中華スマホ) 単純に置き換えただけじゃFPS出ないとはよく言われてるし最適化考えてないベタ移植だからこんなもんかなぁと思ってたんだが、Windows上のNVIDIA環境で動かしたら1割アップ(GL3は880、Vulkanは1000)してた。 これデバイスの特性ってやつなのかスマホのドライバーがアレなのかどっちだと思う? デバイスの特性だったとしたらどうやって最適化したらええんやろか… モバイルだとライフサイクルからして ドライバとデバイスを分ける意味はあんまりないと思うけど ベタ移植でも環境によっては効果があるなら 両方実装して性能の良いほうに切り替えれば良いのでは 素人が効率の良いOpenGL実装をVulkanで作るって不可能な気がするので ANGLEに期待 ANGLE on Vulkan Update Q1 2017 https://groups.google.com/d/msg/angleproject/HfDeJyIXlrU/MnSe6jNiAQAJ 自前じゃ一枚絵を出すのも大変そうだから公式レンダラを みんなでチューニングやカスタマイズみたいな方向になるのかしらね >>683 不明要素が多いから何とも言えない バックバッファの切り替えウェイト、デバイス固有のリミッタとかに填まっている可能性もある。 中身はARMで泥ならば、所詮はVM。 変更できない要素に左右される。 例えば、電池消耗を抑えるためにフレームレートを制限なんかは想像しやすい。 MS違う iOSはJava使ってないから無条件に速いと思ってる iPhone信者か 電池理由でアプリに制限を掛ける。 そういう設計もあるって話。 スマホでfpsを求めるのが間違い。 一番電池を消耗するのは、電波発信。 次がバックライト。その次がプロセッサ どう解釈したら>>690 と>>687 が繋がるのかさっぱり分からん 電池理由でアプリに制限を掛ける設計があるとして GLES2とVulkanで性能差が出る説明にならないし 結局はアプリによるが 性能が限られたスマホだからこそfpsが求められるんじゃないの? 要求が60fps超でなく例えば30fpsだとしても VulkanってAndroidのJava APIからは使えないよね 用意されるのかなそれともvulcan入れてあるけどNDKでやってくれとなるのか JavaってC#みたいな構造体やポインタの操作みたいな ローレベルな事は出来ないけど VulkanみたいなローレベルのAPIを持ってけんの? 提供されるとは思わんが できるかできないかで言えばで 構造体は「同等のバイナリを生成する」クラスで実現できるし ポインタ操作(演算)はそもそも必要ないだろう ポインタ使った最適化したければNDK使えで済む話 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる