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/ 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使えで済む話 >>691 そのデバイスでバックバッファをクリアとスワップをするだけのアプリを走らせれば、性能が出せるのかは、わかるだろ JavaからじゃvkMapMemoryで頂点バッファにアクセス出来ないよな WebGLも同じような理由でglMapBufferがない 代わりにglBufferData的なバッファのアップロード用の関数が必要 3DMarkに追加されたAPI Overhead TestをHuawei P10 Liteでやったが OpenGL ES 3.0: 31547 Vulkan: 45753 でVulkanの方が45%ぐらい早いという結果に ミッドレンジのGPU貧弱な端末だとこんなものか Galaxy S7 edgeだと5.8倍近い差がつくらしい http://www.4gamer.net/games/143/G014363/20170818014/ >>698 おー情報サンクス。リリースグットタイミングだわ。 グラフ見るとOpenGLESのほう60までしかFPS出てないからvsyncで頭打ちになってるっぽいね。 単純にスコアの比較はできない 俺もHuawei P10 Liteだからやってみたけど GLES 36950 Vulkan 53200 だったけど、GLESは60以上出てなかったし、Draw Call per frameの線とFPSの線が交わる高さが一緒だから効率全く変わらない気がする(リンク先のGalaxyだとVulkanの方が交わる位置が高い) CommandBufferを一度作ったら作り直さないみたいなLowLevelAPIに有利さな実装になってると思うから、それで互角ってことはそれができないアプリだと逆にVulkan負けそう。もちろんP10 Liteの話ね。 OpenGL ES超絶難易度アルティメット級でワロタw 俺かなりITと親和性も高いし、3Dそのものは15年以上やってるけど、 CGがちゃんと表示できないwwww これどうやったらちゃんと表示できんの?w もう2週間くらい挑戦してるけど全く進まなくて辛すぎwwwwwwwwwwww 教えてえろい人w それはみんな通過する儀式的なもの絵を出せて半人前 しかし泥なんかあんなにユーザーいるのにまともなレンダラ無いんだよな テクスチャと頂点と視点渡せば絵が出るようなやつが最初からあれば 捗るんだが そんな中途半端なものがまともだとは思えないんだが。 中途半端かね?完成したものはどんなだか興味があるな 入門者が玉転し作れる程度の物すらないのよね 初心者向けならユニティでいいじゃないかと。 なんでJavaで作りたいのか OpenGL 4.6の進化点やOpenCLの将来について,Khronos Group代表のNeil Trevett氏に聞いてみた http://www.4gamer.net/games/107/G010729/20170907023/ ・OpenGL 4.6がリリース Vulkanとの相互連携機能を搭載 ・2017年はVulkanのアップデートなし 移植工程を短縮するラッパーの開発が進む ・OpenCLソフトウェア資産をVulkanで動作させるソリューションを開発 ・glTFは物理ベースレンダリングに対応 WebGLはFlash終了問題が普及の追い風に ・AMDの「プリミティブシェーダ」は,OpenGLやVulkanに取り入れられるのか? glTFの物理ベースって 最新観てもペンディングだったんだが。 器を汎用的で高機能を目指すにしても、別にこの形式のままシェーダに流し込む訳でもないだろうと。 初心者がスクラッチで0からレンダラ書くと年単位でかかる 発熱が少ないバイナリが小さいユニティ使ったこと無いけどなー 最新のOpenGLでできることを OpenGL ESで実現しようとすると大変だが OpenGL ESで実現できることは OpenGLでも(スレチだがDirect Xでも)大差ないと思うんだが >>700 はなぜES名指しなんだろう? 昔のOpenGLはシェーダとか使わなくてもよかったからじゃないかな。 OpenGL 1.5が約15年前な訳だが 携帯デバイスだとデバッグがやりにくい というのなら分からんでもないが それは難易の問題じゃないしなぁ 昔のOpenGLを再現するデフォルトシェーダーとかあると良いのにネ 俺がOpenGL始めたの2007年くらいだったけど そのころは固定機能パイプラインによる解説ばっかだった気がする。 スマホが普及してESが登場した頃から日本度でもまともにGLSLを学習できるようになった気がする。 当時はリアルタイムグラフィックス分野はDirectXが開拓していた だからあえてOpenGLをやる人は クロスプラットフォームだとか互換性を重視していた DirectXやっていた人がOpenGLに流れたのが スマホが普及してESが登場した頃であって OpenGL内だけで言えば固定機能パイプラインとの決別は OpenGL3の策定時点(それこそ2007年頃)で既に決定的だったと思う >>712 それなら素直にOpenGLES1.1使えばええやん 動作も軽いし製作者の力量でソコソコ綺麗な絵出るもんね ただ時代の流れでサポ切りとかあるのか無いのか知りたい GLES自体新しくて多くの端末で動いてるし動かないアプリが出ても困るから安易に切られることはナイアル スマホはDirectX使えないからな 必然的に互換性という面でOpenGLが出てくる スマホ、特にAndroidはパフォーマンス厳しいしVulkanに頼りたくなる OpenGL系は基本後方互換前提の代物だからそうそう切られることはないはず アーキテクチャの違いでパフォーマンスが下がるとかはあるかもしれないけど誤差の範囲でしょ GLUT (pronounced like the glut in gluttony) is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. glutでポリゴンにアンチエイリアスかけれないんだが。 線ならかけれるのに。 どうやんの? 実際のところ画面の高解像度化で アンチエイリアシングなしでも そこそこ鑑賞に堪えうるようになってしまった ミップマップや異方性フィルタリングは欲しいが WinはDirectX MacはMetal VulkanはLinux専門になりそう ほんでもクロスプラットフォームにしようとおもったらVulkan一択なんやろ? >>730 別にWinでもVulkan普通に動くじゃん Androidでもいつかはみんな使うようになる 問題はAppleなんだよな AppleはmacOSでもiOSでもAPIとして採用する気無はなくMetal以外眼中に無い感じやしね 最近Web標準のAPI草案にMetal特有の仕様を突っ込もうとしてMSとGoogleに反発されてなかったっけ 各プラットフォームが足並み揃えてくれないと、クロスプラットフォームが形骸化してしまうし使う意味もなくなるな WebGLはどうなるんだろ ライブラリの開発者は大変だな 物凄く大変だとは思うがそれに見合った収益はあんのかしら glfwとglewで OpenGL 4.6 ターゲットにプログラムしています。 glslの "layout(binding = N)" が反映されず困っています。 glGet○○すると 0 が返って来ます。 どうやら宣言順にインデックスが付けられてるようで glGet○○の値を使えば正常に動作します。 でも気持ち悪いです。 何で binding 指定が有効にならいのでしょうか? 初めはUniformBuffer使おうとして気づいたのですが、 ショートプログラムで確認した結果、 shaderStorage、sampler、image等も同じく反映されないようです。 環境はGeforce GTX760、ドライバVer388.13、VSコミュ2017使ってます。 >>736 横からだが、シェーダ側で指定したバインド順番をCPUに強制させたいという話かと理解したが それは後方互換性を維持するためではないかと DX9cから始めて11のあとにglに来たんだが 混乱と雑音をうむだけの後方互換性は、はよ切り捨てろとは思った。 glは統一規格を目指してない。 専用機での利用を大前提としたGPU規格のテンプレートみたいな印象がした。 >>736 GLSL一行目の#version指定が正しくないとか? layout指定は300以降だったかな? OpenGL/GLESとGLSLのversion指定って混乱するよね…… ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる