ユーザ用ツール

サイト用ツール


opengl:glsl_hlsl

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:glsl_hlsl [2013/05/16 21:02] – [Texture] ogaopengl:glsl_hlsl [2016/09/12 14:53] (現在) – [GLSL/HLSL/Metal 命令対応表] oga
行 1: 行 1:
-====== GLSL/HLSL 命令対応表 ======+====== GLSL/HLSL/Metal 命令対応表 ======
  
 +  * 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                              ^ 
-| float                             | float                          |    | 
-|                                   | float1                            | 
-| vec2                              | float2                            | 
-| vec3                              | float3                            | 
-| vec4                              | float4                            | 
-| mat3                              | float3x3                          | 
-| mat4                              | float4x4                          | 
-| int                               | int                            |    | 
-| ivec2/ivec3/ivec4                 | int2/int3/int4                    | 
-| bool                              | bool                              | 
-| bvec2/bvec3/bvec4                 | bool2/bool3/bool4              |    | 
-| lowp float                        |                                | 少なくても 10bit fixed 以上 | 
-| mediump float                     | half                           | 少なくても 16bit fp 以上 | 
-| highp float                       | float                          | 32bit fp  | 
-| double                            | double                         | 64bit fp  | 
-| vec3 x= vec3( a, b, c );          | float3 x= { a, b, c };            | 
-| :::                               | float3 x= float3( a, b, c );      | 
-| float x[3]= float[]( a, b, c );   | float x[3]= { a, b, c };          | 
-| type( x )                         | (type)x                        | cast  | 
-| matrix * matrix                   | mul( matrix, matrix )          |    | 
-| vector * matrix                   | mul( vector, matrix )          |    | 
-| uniform                           | (uniform)                      |    | 
-| in/out , varying/attribute        | (semantics)                    | HLSL は in/out に function の引数と戻り値を使う。   | 
-| builtin gl_* variables            | system semantics SV_*          |    | 
  
  
 +^ 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                | <nowiki>var [[qualifier]]</nowiki>  | HLSL は in/out に function の引数と戻り値を使う。   |
 +| builtin gl_* variables            | system semantics SV_*          | <nowiki>var [[qualifier]]</nowiki>  |    |
  
  
  
  
-^ GLSL                        ^ HLSL                          ^ 
-| inversesqrt( x )            | rsqrt( x )                 | 1/sqrt( x ) | 
-| mix( x, y, s )              | lerp( x, y, s )            |    | 
-| clamp( x, min, max )        | clamp( x, min, max  )      |    | 
-| clamp( x, 0.0, 1.0  )       | saturate( x )              |    | 
-| step( edge, x )             | step( edge, x )            | x < edge ? 0.0 : 1.0 | 
-| smoothstep( min, max, x )   | smoothstep( min, max, x )  | clamp( (x-min) / (max-min), 0.0, 1.0 ) | 
  
  
  
  
-^ GLSL                                       ^ HLSL                                  ^                 ^ 
-| sampler2D samplerobj                       | Texture2D<type> textureobj            | sampler type    | 
-| sampler2DShadow shadowobj                  | Texture2D<type> shadowobj             | sampler type    | 
-| v= texture( samplerobj, texcoord.. );      | v= textureobj.Sample( texcoord.. );   | sampling        | 
-| v= texture2D( sampleobj, texcoord.. );     | v= tex2D( sampler, texcoord.. );      | legacy syntax   | 
-| v= textureGather( sadowobj, texcoord.. );  | v= shadowobj.SampleCmp( texcoord.. ); | pcf shadow map  | 
  
  
-^ shader  ^ GLSL                                  ^ HLSL                                                    +^ GLSL                        ^ HLSL                       Metal                      ^    
-vsh     in int gl_VertexID;                   uint var_name : SV_VertexID ;                  +inversesqrt( x )            rsqrt( x )                 rsqrt( x )                 1/sqrt( x ) 
-:::     in int gl_InstanceID;                 uint var_name : SV_InstanceID ;                +mix( x, y, s )              lerp( x, y, s )            mix( x, y, s )                
-fsh/psh | out vec4 color; (GL2: gl_FragColor  float4  ... : SV_Target ; (DX9: COLOR        +clampx, min, max        clamp( x, min, max  )      | clampx, min, max          
-|  :::    out float gl_FragDepth;               float ... : SV_Depth ; (DX9: DEPTH           |+clamp( x, 0.0, 1.0  )       | saturate( x )              | saturate( x )              |    | 
 +| step( edge, x )             | step( edge, x )            | step( edge, x )            x < edge ? 0.1.0 | 
 +| smoothstepmin, 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 ;           | <nowiki>uint var_name [[vertex_id]];</nowiki>    |
 +| :::     | in int gl_InstanceID;                 | uint var_name : SV_InstanceID ;         | <nowiki>uint var_name [[instance_id]];</nowiki>  |
 +| :::     | out vec4 gl_Position;                 | float4 ... : SV_Position ;              | <nowiki>float4 ... [[position]];</nowiki>    |
 +| fsh/psh | out vec4 color; (GL2: gl_FragColor)   | float4  ... : SV_Target ; (DX9: COLOR)  | <nowiki>half4 ... [[color(0)]];</nowiki>     |
 +|  :::    | out float gl_FragDepth;               | float ... : SV_Depth ; (DX9: DEPTH)     | <nowiki>float ... [[depth(less)]];</nowiki>  |
  
  
行 104: 行 119:
 | GL_UNIFORM_BUFFER               | D3D11_BIND_CONSTANT_BUFFER  | ConstantBuffer   | | GL_UNIFORM_BUFFER               | D3D11_BIND_CONSTANT_BUFFER  | ConstantBuffer   |
 | GL_TRANSFORM_FEEDBACK_BUFFER    | D3D11_BIND_STREAM_OUTPUT    |           | | GL_TRANSFORM_FEEDBACK_BUFFER    | D3D11_BIND_STREAM_OUTPUT    |           |
 +^    ^^^
 +| GL_VERTEX_ARRAY_BINDING         | D3D11InputLayout            |          |
 +
 +
  
  
行 130: 行 149:
 ^ min + mip                   ^ mag             ^ min               ^ mag             ^ mip                      :::                        | ^ min + mip                   ^ mag             ^ min               ^ mag             ^ mip                      :::                        |
 | GL_NEAREST                  | GL_NEAREST      | D3DTEXF_POINT     | D3DTEXF_POINT   | D3DTEXF_NONE    |        | | GL_NEAREST                  | GL_NEAREST      | D3DTEXF_POINT     | D3DTEXF_POINT   | D3DTEXF_NONE    |        |
-| GL_LINEAR                   | GL_NEAREST      | D3DTEXT_LINEAR    | 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_NEAREST                  | GL_LINEAR       | D3DTEXF_POINT     | D3DTEXF_LINEAR  | D3DTEXF_NONE    |        |
 | GL_LINEAR                   | GL_LINEAR       | D3DTEXF_LINEAR    | 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_NEAREST_MIPMAP_NEAREST   | GL_NEAREST      | D3DTEXF_POINT     | D3DTEXF_POINT   | D3DTEXF_POINT   | D3D11_FILTER_MIN_MAG_MIP_POINT                |
-| GL_LINEAR_MIPMAP_NEAREST    | GL_NEAREST      | D3DTEXT_LINEAR    | D3DTEXF_POINT   | D3DTEXF_POINT   | D3D11_FILTER_MIN_LINEAR_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_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_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_NEAREST_MIPMAP_LINEAR    | GL_NEAREST      | D3DTEXF_POINT     | D3DTEXF_POINT   | D3DTEXF_LINEAR  | D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR         |
-| GL_LINEAR_MIPMAP_LINEAR     | GL_NEAREST      | D3DTEXT_LINEAR    | D3DTEXF_POINT   | D3DTEXF_LINEAR  | D3D11_FILTER_MIN_LINEAR_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_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               | | 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                      | |                                             | D3DTEXF_ANISOTROPIC  | D3DTEXF_ANISOTROPIC  |         | D3D11_FILTER_ANISOTROPIC                      |
 +
 +  * Mip Linear = Tri Linear Filter
 +
 +
 +^ 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.1368705767.txt.gz · 最終更新: 2013/05/16 21:02 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki