[vert.glsl] #version 120 attribute vec3 in_Position; attribute vec2 in_TexCoord; varying vec2 pass_TexCoord; uniform mat4 u_projection; uniform mat4 u_view; uniform mat4 u_model; void main() { gl_Position = u_projection * u_view * u_model * vec4(in_Position, 1.0); pass_TexCoord = in_TexCoord; } [frag.glsl] #version 120 #if defined GL_ES precision mediump float; #endif uniform sampler2D u_texture; uniform sampler2D u_palette; uniform vec2 u_texsize; varying vec2 pass_TexCoord; void main() { vec4 pal = texture2D(u_texture, pass_TexCoord); vec4 col = texture2D(u_palette, vec2(pal.x, 0.f)); if (pal.x == 0.0) discard; gl_FragColor = col; } [vert.hlsl] void main(float4 in_Position : POSITION, float2 in_TexCoord : TEXCOORD0, uniform float4x4 u_projection, uniform float4x4 u_view, uniform float4x4 u_model, uniform float2 u_texsize, out float2 out_TexCoord : TEXCOORD0, out float4 out_Position : POSITION) { #if _XBOX float2 delta = float2(-0.5, -0.5) / u_texsize; #else float2 delta = float2(0.0, 0.0); #endif out_Position = mul(u_projection, mul(u_view, mul(u_model, in_Position))); out_TexCoord = in_TexCoord + delta; } [frag.hlsl] void main(float2 in_TexCoord : TEXCOORD0, uniform sampler2D u_texture, out float4 out_FragColor : COLOR) { float4 col = tex2D(u_texture, in_TexCoord); out_FragColor = col; }