シェーダー形式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/08 22:55 UTC 版)
「3DCGソフトウェア」の記事における「シェーダー形式」の解説
リアルタイムではDirectX/Vulkan 1.2以降で採用されているHLSL言語や、OpenGL/Vulkanで採用されているGLSL言語、Apple Metalで採用されているMSL言語が良く使われている。マルチプラットフォームのシェーダー言語としてはNVIDIAのCg (HLSLに近い) が存在していたものの廃止となり、シェーダー言語変換が行われるようになっている。ただしシェーダー形式によって制限が存在する (MSL言語におけるdouble型非対応など)。 エフェクト用の形式ではCg/HLSL言語を基にしたCgFX/DirectX FX形式や、GLSL言語を基にしたCOLLADA FX形式、汎用のnvFX形式が使われている。ゲームエンジンのUnityでは、HLSL言語等を内包可能なShaderLab言語が使われている。VJソフトウェアでは、GLSL派生のISF形式 (Interactive Shader Format)が普及している (VDMX、COGE 1.6.4以降、Magic 1.6以降など)。 シェーダーを中間コンパイルして中間言語バイナリにすることも行われている。 APIプログラミング言語中間言語アセンブラ中間言語バイナリDirectX (Shader Model 4 / 5)HLSL言語 (*.hlsl) Shader Model 4 / 5 アセンブリ DXBC (*.cso) DirectX (Shader Model 6以降)DXIL DXILバイトコード (*.cso) OpenGL/VulkanGLSL言語 (*.vert、*.tesc、*.tese、*.geom、*.frag、*.comp、*.mesh、*.task、*.rgen、*.rint、*.rahit、*.rchit、*.rmiss、*.rcall) SPIR-Vアセンブラ (*.spvasm) SPIR-Vバイナリ (*.spv) Vulkan 1.2以降HLSL言語 (*.hlsl) Apple MetalMSL言語 (*.metal) ? AIR (*.air) Web向けでは、HTML5のWebGLやCSS Shadersで採用されているGLSL ES言語が良く使われている。また、GLSL ES言語を基にして、音声やマルチパス処理に対応させたものとして、ShaderToyで使われているShaderToy形式(*.stoy)が存在する。かつては、Adobe Flashに採用されていたPixel Bender言語やAGAL言語も使われていた。 オフラインレンダリングでは、オープンソースのOSL言語やNVIDIAのMDL言語が良く使われている。また、C++言語によるシェーダー作成も行われている (RenderManやArnoldなど)。かつてはRenderManのRSL言語(及びその派生のHoudiniのMantraレンダラのVEX言語 (*.vfl)やNVIDIA GelatoのGSL言語)、NVIDIA mental rayのMetaSL (*.msl/*.xmsl)が良く使われていた。シェーダーの事前コンパイルが行われており、OSLは*.osoに、RSLやその派生はレンダラーに依り様々な拡張子に (RenderMan#RenderMan互換レンダラーの比較参照) ネイティブコンパイルされる。 コンポジットソフトウェアでは、 ソフトウェアにより使用可能なシェーダー言語が異なる。Flame及びSmokeのMatchboxではGLSL言語、Fusion 6.0以降ではCg言語、NukeはC++に似たBlink Script言語、After Effectsは独自のPixelBender言語が使われている。 使用するソフトウェアによってシェーダー形式が異なるため、シェーダー変換ソフトウェアが存在する (#シェーダー変換)。
※この「シェーダー形式」の解説は、「3DCGソフトウェア」の解説の一部です。
「シェーダー形式」を含む「3DCGソフトウェア」の記事については、「3DCGソフトウェア」の概要を参照ください。
- シェーダー形式のページへのリンク