opengl:glsl_hlsl
HLSL = DirectX (D3D8/D3D9/D3D10/D3D11/D3D12)
GLSL = OpenGL 2/3/4, OpenGL ES 2/3, Vulkan, SpliteKit (watchOS)
Metal = Metal (iOS/tvOS/macOS)
| GLSL | HLSL | Metal | |
| float | float | float | |
| – | float1 | – | HLSLのみ single vector 可能 |
| vec2/vec3/vec4 | float2/float3/float4 | float2/float3/float4 | |
| mat3 | float3x3 | float3x3 | |
| mat4 | float4x4 | float4x4 | |
| mat3x4 | float3x4 | float3x4 | |
| int | int | int | |
| ivec2/ivec3/ivec4 | int2/int3/int4 | int2/int3/int4 | |
| uint | uint | uint (unsigned int) | |
| uvec2/uvec3/uvec4 | uint2/uint3/uint4 | uint2/uint3/uint4 | |
| bool | bool | bool | |
| bvec2/bvec3/bvec4 | bool2/bool3/bool4 | bool2/bool3/bool4 | |
| lowp float | min10float | – | 10bit fixed 以上 |
| mediump float | half (min16float) | half | 16bit fp 以上 |
| highp float | float | float | 32bit fp |
| double | double | – | 64bit fp |
| highp int / uint | int / uint | int / uint | 32bit int |
| mediump int / uint | min16int / min16uint | short / ushort | 16bit int 以上 |
| lowp int / uint | min12int | – | 9bit int 以上 |
| – | – | char / uchar | 8bit int |
| vec3 x= vec3( a, b, c ); | float3 x= { a, b, c }; | float3 x= { a, b, c }; | |
| float3 x= float3( a, b, c ); | float3 x= float3( a, b, c ); | |
| float x[3]= float[]( a, b, c ); | float x[3]= { a, b, c }; | float x[3]= { a, b, c }; | |
| type( x ) | (type)x | (type)x, type(x) | cast |
| matrix * matrix | mul( matrix, matrix ) | matrix * matrix | |
| vector * matrix | mul( vector, matrix ) | vecotr * matrix | |
| uniform | (uniform) | constant | |
| in/out , varying/attribute | var : semantics | var [[qualifier]] | HLSL は in/out に function の引数と戻り値を使う。 |
| builtin gl_* variables | system semantics SV_* | var [[qualifier]] | |
| GLSL | HLSL | Metal | |
| inversesqrt( x ) | rsqrt( x ) | rsqrt( x ) | 1/sqrt( x ) |
| mix( x, y, s ) | lerp( x, y, s ) | mix( x, y, s ) | |
| clamp( x, min, max ) | clamp( x, min, max ) | clamp( x, min, max ) | |
| clamp( x, 0.0, 1.0 ) | saturate( x ) | saturate( x ) | |
| step( edge, x ) | step( edge, x ) | step( edge, x ) | x < edge ? 0.0 : 1.0 |
| smoothstep( min, max, x ) | smoothstep( min, max, x ) | smoothstep( min, max, x ) | clamp( (x-min) / (max-min), 0.0, 1.0 ) |
| GLSL | HLSL | Metal | |
| sampler2D samplerobj | Texture2D<type> texobj | texture2d<type> texobj | sampler type |
| sampler2DShadow depthobj | Texture2D<type> depthobj | depth2d<type> depthobj | sampler type |
| v= texture( samplerobj, texcoord.. ); | v= texobj.Sample( texcoord.. ); | v= texobj.sample( sampler, texcoord .. ) | sampling |
| v= texture2D( sampleobj, texcoord.. ); | v= tex2D( sampler, texcoord.. ); | – | legacy syntax |
| v= textureGather( depthobj, texcoord.. ); | v= depthobj.SampleCmp( texcoord.. ); | v= depthobj.sample_compare( … ) | pcf shadow map |
| shader | GLSL | HLSL | Metal |
| vsh | in int gl_VertexID; | uint var_name : SV_VertexID ; | uint var_name [[vertex_id]]; |
| in int gl_InstanceID; | uint var_name : SV_InstanceID ; | uint var_name [[instance_id]]; |
| out vec4 gl_Position; | float4 … : SV_Position ; | float4 ... [[position]]; |
| fsh/psh | out vec4 color; (GL2: gl_FragColor) | float4 … : SV_Target ; (DX9: COLOR) | half4 ... [[color(0)]]; |
| out float gl_FragDepth; | float … : SV_Depth ; (DX9: DEPTH) | float ... [[depth(less)]]; |
Blend
| OpenGL | id | Direct3D 11 |
| GL_ZERO | 1 | D3D11_BLEND_ZERO |
| GL_ONE | 2 | D3D11_BLEND_ONE |
| GL_SRC_COLOR | 3 | D3D11_BLEND_SRC_COLOR |
| GL_ONE_MINUS_SRC_COLOR | 4 | D3D11_BLEND_INV_SRC_COLOR |
| GL_SRC_ALPHA | 5 | D3D11_BLEND_SRC_ALPHA |
| GL_ONE_MINUS_SRC_ALPHA | 6 | D3D11_BLEND_INV_SRC_ALPHA |
| GL_DST_ALPHA | 7 | D3D11_BLEND_DEST_ALPHA |
| GL_ONE_MINUS_DST_ALPHA | 8 | D3D11_BLEND_INV_DEST_ALPHA |
| GL_DST_COLOR | 9 | D3D11_BLEND_DEST_COLOR |
| GL_ONE_MINUS_DST_COLOR | 10 | D3D11_BLEND_INV_DEST_COLOR |
| GL_SRC_ALPHA_SATURATE | 11 | D3D11_BLEND_SRC_ALPHA_SAT |
| GL_CONSTANT_COLOR | 14 | D3D11_BLEND_BLEND_FACTOR |
| GL_ONE_MINUS_CONSTANT_COLOR | 15 | D3D11_BLEND_INV_BLEND_FACTOR |
| GL_SRC1_COLOR | 16 | D3D11_BLEND_SRC1_COLOR |
| GL_ONE_MINUS_SRC1_COLOR | 17 | D3D11_BLEND_INV_SRC1_COLOR |
| GL_SRC1_ALPHA | 18 | D3D11_BLEND_SRC1_ALPHA |
| GL_ONE_MINUS_SRC1_ALPHA | 19 | D3D11_BLEND_INV_SRC1_ALPHA |
| OpenGL | id | Direct3D 11 |
| GL_FUNC_ADD | 1 | D3D11_BLEND_OP_ADD |
| GL_FUNC_SUBTRACT | 2 | D3D11_BLEND_OP_SUBTRACT |
| GL_FUNC_REVERSE_SUBTRACT | 3 | D3D11_BLEND_OP_REV_SUBTRACT |
| GL_MIN | 4 | D3D11_BLEND_OP_MIN |
| GL_MAX | 5 | D3D11_BLEND_OP_MAX |
Buffer
| OpenGL | Direct3D | |
| GL_ARRAY_BUFFER | D3D11_BIND_VERTEX_BUFFER | VertexBuffer |
| GL_ELEMENT_ARRAY_BUFFER | D3D11_BIND_INDEX_BUFFER | IndexBuffer |
| GL_UNIFORM_BUFFER | D3D11_BIND_CONSTANT_BUFFER | ConstantBuffer |
| GL_TRANSFORM_FEEDBACK_BUFFER | D3D11_BIND_STREAM_OUTPUT | |
| |
| GL_VERTEX_ARRAY_BINDING | D3D11InputLayout | |
| OpenGL | Direct3D | |
| GL_STATIC_DRAW | D3D11_USAGE_IMMUTABLE | |
| GL_STREAM_DRAW | D3D11_USAGE_DYNAMIC | |
| GL_DYNAMIC_COPY? | D3D11_USAGE_DEFAULT | |
| GL_*_READ | D3D11_USAGE_STAGING | |
Texture
| OpenGL | Direct3D | |
| S3TC/DXT1 | DXT1/BC1 | |
| S3TC/DXT3 | DXT3/BC2 | |
| S3TC/DXT5 | DXT5/BC3 | |
| RGTC | 3DC/BC4/BC5 | |
| BPTC | BC6H/BC7 | |
| OpenGL | Direct3D9 | Direct3D11 |
| min + mip | mag | min | mag | mip |
| GL_NEAREST | GL_NEAREST | D3DTEXF_POINT | D3DTEXF_POINT | D3DTEXF_NONE | |
| GL_LINEAR | GL_NEAREST | D3DTEXF_LINEAR | D3DTEXF_POINT | D3DTEXF_NONE | |
| GL_NEAREST | GL_LINEAR | D3DTEXF_POINT | D3DTEXF_LINEAR | D3DTEXF_NONE | |
| GL_LINEAR | GL_LINEAR | D3DTEXF_LINEAR | D3DTEXF_LINEAR | D3DTEXF_NONE | |
| GL_NEAREST_MIPMAP_NEAREST | GL_NEAREST | D3DTEXF_POINT | D3DTEXF_POINT | D3DTEXF_POINT | D3D11_FILTER_MIN_MAG_MIP_POINT |
| GL_LINEAR_MIPMAP_NEAREST | GL_NEAREST | D3DTEXF_LINEAR | D3DTEXF_POINT | D3DTEXF_POINT | D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT |
| GL_NEAREST_MIPMAP_NEAREST | GL_LINEAR | D3DTEXF_POINT | D3DTEXF_LINEAR | D3DTEXF_POINT | D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT |
| GL_LINEAR_MIPMAP_NEAREST | GL_LINEAR | D3DTEXF_LINEAR | D3DTEXF_LINEAR | D3DTEXF_POINT | D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT |
| GL_NEAREST_MIPMAP_LINEAR | GL_NEAREST | D3DTEXF_POINT | D3DTEXF_POINT | D3DTEXF_LINEAR | D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR |
| GL_LINEAR_MIPMAP_LINEAR | GL_NEAREST | D3DTEXF_LINEAR | D3DTEXF_POINT | D3DTEXF_LINEAR | D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR |
| GL_NEAREST_MIPMAP_LINEAR | GL_LINEAR | D3DTEXF_POINT | D3DTEXF_LINEAR | D3DTEXF_LINEAR | D3D11_FILTER_MIN_POINT_MAG_MAIP_LINEAR |
| GL_LINEAR_MIPMAP_LINEAR | GL_LINEAR | D3DTEXF_LINEAR | D3DTEXF_LINEAR | D3DTEXF_LINEAR | D3D11_FILTER_MIN_MAG_MIP_LINEAR |
| | | D3DTEXF_ANISOTROPIC | D3DTEXF_ANISOTROPIC | | D3D11_FILTER_ANISOTROPIC |
| OpenGL | Direct3D |
| GL_REPEAT | D3D11_TEXTURE_ADDRESS_WRAP |
| GL_MIRRORED_REPEAT | D3D11_TEXTURE_ADDRESS_MIRROR |
| GL_CLAMP_TO_EDGE | D3D11_TEXTURE_ADDRESS_CLAMP |
| GL_CLAMP_TO_BORDER | D3D11_TEXTURE_ADDRESS_BORDER |
| | D3D11_TEXTURE_ADDRESS_MIRROR_ONCE |
opengl/glsl_hlsl.txt · 最終更新: by oga