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 · 最終更新: 2016/09/12 14:53 by oga