Go で書き直した Ikemen
リビジョン | 16b2e87dbb15a07083d6f758459d7166c78d83f3 (tree) |
---|---|
日時 | 2019-05-29 23:03:42 |
作者 | neatunsou <sisiy4excite@gmai...> |
コミッター | neatunsou |
nckgriva氏の更新に対応
@@ -27,7 +27,7 @@ var postTexUniform int32 | ||
27 | 27 | var postTexSizeUniform int32 |
28 | 28 | var postVertices = [8]float32{-1, -1, 1, -1, -1, 1, 1, 1} |
29 | 29 | |
30 | -var postShaderSelect [3]uintptr | |
30 | +var postShaderSelect [4]uintptr | |
31 | 31 | |
32 | 32 | func RenderInit() { |
33 | 33 | vertShader := "attribute vec2 position;" + |
@@ -190,6 +190,13 @@ func RenderInit() { | ||
190 | 190 | postShaderSelect[2] = link(vertObj, fragObj) |
191 | 191 | gl.DeleteObjectARB(vertObj) |
192 | 192 | gl.DeleteObjectARB(fragObj) |
193 | + | |
194 | + // [3]: scanline shader | |
195 | + vertObj = compile(gl.VERTEX_SHADER, scanlineVertShader) | |
196 | + fragObj = compile(gl.FRAGMENT_SHADER, scanlineFragShader) | |
197 | + postShaderSelect[3] = link(vertObj, fragObj) | |
198 | + gl.DeleteObjectARB(vertObj) | |
199 | + gl.DeleteObjectARB(fragObj) | |
193 | 200 | |
194 | 201 | gl.ActiveTexture(gl.TEXTURE0) |
195 | 202 | gl.GenTextures(1, &fbo_texture) |
@@ -838,3 +845,29 @@ void main() | ||
838 | 845 | gl_FragColor.xyz=(w1*(i1+i3)+w2*(i2+i4)+w3*(s1+s3)+w4*(s2+s4)+c)/(2.0*(w1+w2+w3+w4)+1.0); |
839 | 846 | gl_FragColor.a = 1.0; |
840 | 847 | }` + "\x00" |
848 | + | |
849 | +var scanlineVertShader string = ` | |
850 | +uniform vec2 TextureSize; | |
851 | +attribute vec2 VertCoord; | |
852 | + | |
853 | +void main(void) { | |
854 | + gl_Position = vec4(VertCoord, 0.0, 1.0); | |
855 | + gl_TexCoord[0].xy = (VertCoord + 1.0) / 2.0; | |
856 | +} | |
857 | +` + "\x00" | |
858 | + | |
859 | +var scanlineFragShader string = ` | |
860 | +uniform sampler2D Texture; | |
861 | +uniform vec2 TextureSize; | |
862 | + | |
863 | +void main(void) { | |
864 | + vec4 rgb = texture2D(Texture, gl_TexCoord[0].xy); | |
865 | + vec4 intens ; | |
866 | + if (fract(gl_FragCoord.y * (0.5*4.0/3.0)) > 0.5) | |
867 | + intens = vec4(0); | |
868 | + else | |
869 | + intens = smoothstep(0.2,0.8,rgb) + normalize(vec4(rgb.xyz, 1.0)); | |
870 | + float level = (4.0-gl_TexCoord[0].z) * 0.19; | |
871 | + gl_FragColor = intens * (0.5-level) + rgb * 1.1 ; | |
872 | +} | |
873 | +` + "\x00" |