Help us understand the problem. What is going on with this article?

GLSLをHLSLに書き換える

GLSLをUnityのシェーダーに書き換える時よく使うやつをメモっていく。
一番下の参考ページを見たほうが早いかもしれません。

◆ 変数

名前が違うやつ

GLSL HLSL 説明
vec4, vec3, vec2 float4, float3, float2 ベクトル
mat3, mat4, mat3x4 float3x3, float4x4, float3x4 マトリクス

名前が同じやつ

GLSL, HLSL 説明
sampler2D テクスチャ
float フロート

◆ 関数

名前が違うやつ

GLSL HLSL 説明
fract(x) frac(x) x の小数部を返します。
mod(x,y) fmod(x, y) x/y の浮動小数点の剰余を返します。
atan(x,y) atan2(x, y) 2 つの値 (x,y) のアークタンジェントを返します。
mix(x,y,a) lerp(x,y,a) xとyの間の線形補間。
texture2D(img,texcoord) tex2D(img,texcoord) 色取得

名前が同じやつ

GLSL, HLSL 説明
pow(x,y) xをy乗する
abs(x) 絶対値
step(edge,x) x < edge ? 0.0 : 1.0
smoothstep( x,y,a ) x,y間をスムーズに補間
clamp( x, min, max ) xがmin以下ならmin, max以上ならmax
discard フラグメントシェーダーでピクセルの結果を出力しない
length(v) ベクトルVの長さ(絶対値)を返す
floor(x) 少数きりすて
sign(x) x の符号を計算
normalize(v) 正規化

GLSLにないやつ

GLSL HLSL 説明
matrix * matrix mul(matrix,matrix) マトリックスどうしや、ベクターとマトリックス掛け算。HLSLは関数を使う
clamp( x, 0.0, 1.0 ) saturate( x ) [0,1]でcalmpするsaturate。GLSLにはない。clampで代用。
if(x<0) discard; clip( x ) xが負ならdiscardするclip関数。glslならif文で書くのかな??

参考ページ

GLSL/HLSL/Metal 命令対応表
http://dench.flatlib.jp/opengl/glsl_hlsl

組み込み関数 (DirectX HLSL)
https://msdn.microsoft.com/ja-jp/library/bb509611(v=vs.85).aspx

Shader(HLSL), 手続き的にテクスチャ生成など行うとき使用頻度の高い関数
http://qiita.com/oishihiroaki/items/9d899cdcb9bee682531a

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away