cool-retro-term
91 строка · 3.6 Кб
1import QtQuick 2.0
2
3QtObject {
4property string rasterizationShader:
5(appSettings.rasterization === appSettings.no_rasterization ? "
6lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
7return texel;
8}" : "") +
9
10(appSettings.rasterization === appSettings.scanline_rasterization ? "
11#define INTENSITY 0.30
12#define BRIGHTBOOST 0.30
13
14lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
15lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * texel)) * texel;
16lowp vec3 pixelLow = ((1.0 - INTENSITY) + (0.1 * texel)) * texel;
17
18vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
19lowp float mask = 1.0 - abs(coords.y);
20
21lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
22return mix(texel, rasterizationColor, intensity);
23}" : "") +
24
25(appSettings.rasterization === appSettings.pixel_rasterization ? "
26#define INTENSITY 0.30
27#define BRIGHTBOOST 0.30
28
29lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
30lowp vec3 result = texel;
31
32lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * texel)) * texel;
33lowp vec3 pixelLow = ((1.0 - INTENSITY) + (0.1 * texel)) * texel;
34
35vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
36coords = coords * coords;
37lowp float mask = 1.0 - coords.x - coords.y;
38
39lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
40return mix(texel, rasterizationColor, intensity);
41}" : "") +
42
43(appSettings.rasterization === appSettings.subpixel_rasterization ? "
44#define INTENSITY 0.30
45#define BRIGHTBOOST 0.30
46#define SUBPIXELS 3.0
47const vec3 offsets = vec3(3.141592654) * vec3(1.0/2.0,1.0/2.0 - 2.0/3.0,1.0/2.0-4.0/3.0);
48
49lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
50vec2 omega = vec2(3.141592654) * vec2(2.0) * virtualResolution;
51vec2 angle = screenCoords * omega;
52vec3 xfactors = (SUBPIXELS + sin(angle.x + offsets)) / (SUBPIXELS + 1.0);
53
54lowp vec3 result = texel * xfactors;
55lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * result)) * result;
56lowp vec3 pixelLow = ((1.0 - INTENSITY) + (0.1 * result)) * result;
57
58vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
59lowp float mask = 1.0 - abs(coords.y);
60
61lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
62return mix(texel, rasterizationColor, intensity);
63}" : "") +
64
65"\n\n"
66
67property string min2: "
68float min2(vec2 v) {
69return min(v.x, v.y);
70}\n\n"
71
72property string rgb2grey: "
73float rgb2grey(vec3 v) {
74return dot(v, vec3(0.21, 0.72, 0.04));
75}\n\n"
76
77property string max2: "
78float max2(vec2 v) {
79return max(v.x, v.y);
80}\n\n"
81
82property string prod2: "
83float prod2(vec2 v) {
84return v.x * v.y;
85}\n\n"
86
87property string sum2: "
88float sum2(vec2 v) {
89return v.x + v.y;
90}\n\n"
91}
92