소스 검색

neercs: do not crash if the shader system does not support integer attributes,

but do not display anything yet (the code is not ready).
master
Sam Hocevar 12 년 전
부모
커밋
65b5b58e98
1개의 변경된 파일24개의 추가작업 그리고 1개의 파일을 삭제
  1. +24
    -1
      neercs/video/text.lolfx

+ 24
- 1
neercs/video/text.lolfx 파일 보기

@@ -2,8 +2,14 @@

#version 130

#define HAVE_UINT 0

attribute vec2 in_Position;
#if HAVE_UINT
attribute uint in_Char, in_Attr;
#else
attribute vec4 in_Char, in_Attr;
#endif

varying vec4 pass_Foreground;
varying vec4 pass_Background;
@@ -13,10 +19,16 @@ uniform mat4 in_Transform;

void main()
{
#if HAVE_UINT
float u = float(in_Char & 0xfu) / 32.0 + 0.0;
float v = float((in_Char >> 4u) & 0xfu) / 32.0 + 0.5;
#else
float u = 3.0 / 32.0;
float v = 3.0 / 32.0 + 0.5;
#endif
pass_UV = vec2(u, v);

#if HAVE_UINT
float A = float(in_Attr >> 29u) / 7.0;
float B = float((in_Attr >> 25u) & 0xfu) / 15.0;
float C = float((in_Attr >> 21u) & 0xfu) / 15.0;
@@ -26,6 +38,17 @@ void main()
float F = float((in_Attr >> 11u) & 0xfu) / 15.0;
float G = float((in_Attr >> 7u) & 0xfu) / 15.0;
float H = float((in_Attr >> 4u) & 0x7u) / 7.0;
#else
float A = 0.0;
float B = 0.0;
float C = 0.0;
float D = 0.0;

float E = 0.0;
float F = 1.0;
float G = 1.0;
float H = 1.0;
#endif

pass_Background = vec4(B, C, D, 1.0 - A);
pass_Foreground = vec4(F, G, H, 1.0 - E);
@@ -53,4 +76,4 @@ void main(void)
vec2 c = gl_PointCoord * (1.0 / 32.0) + pass_UV;
float t = texture2D(in_Texture, c).x;
gl_FragColor = mix(pass_Background, pass_Foreground, t);
}
}

불러오는 중...
취소
저장