cool-retro-term

Форк
0
/
ShaderLibrary.qml 
91 строка · 3.6 Кб
1
import QtQuick 2.0
2

3
QtObject {
4
    property string rasterizationShader:
5
        (appSettings.rasterization === appSettings.no_rasterization ? "
6
            lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
7
                return texel;
8
            }" : "") +
9

10
        (appSettings.rasterization === appSettings.scanline_rasterization ? "
11
            #define INTENSITY 0.30
12
            #define BRIGHTBOOST 0.30
13

14
            lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
15
                lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * texel)) * texel;
16
                lowp vec3 pixelLow  = ((1.0 - INTENSITY) + (0.1 * texel)) * texel;
17

18
                vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
19
                lowp float mask = 1.0 - abs(coords.y);
20

21
                lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
22
                return mix(texel, rasterizationColor, intensity);
23
            }" : "") +
24

25
        (appSettings.rasterization === appSettings.pixel_rasterization ? "
26
            #define INTENSITY 0.30
27
            #define BRIGHTBOOST 0.30
28

29
            lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
30
                lowp vec3 result = texel;
31

32
                lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * texel)) * texel;
33
                lowp vec3 pixelLow  = ((1.0 - INTENSITY) + (0.1 * texel)) * texel;
34

35
                vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
36
                coords = coords * coords;
37
                lowp float mask = 1.0 - coords.x - coords.y;
38

39
                lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
40
                return 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
47
            const 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

49
            lowp vec3 applyRasterization(vec2 screenCoords, lowp vec3 texel, vec2 virtualResolution, float intensity) {
50
                vec2 omega = vec2(3.141592654) * vec2(2.0) * virtualResolution;
51
                vec2 angle = screenCoords * omega;
52
                vec3 xfactors = (SUBPIXELS + sin(angle.x + offsets)) / (SUBPIXELS + 1.0);
53

54
                lowp vec3 result = texel * xfactors;
55
                lowp vec3 pixelHigh = ((1.0 + BRIGHTBOOST) - (0.2 * result)) * result;
56
                lowp vec3 pixelLow  = ((1.0 - INTENSITY) + (0.1 * result)) * result;
57

58
                vec2 coords = fract(screenCoords * virtualResolution) * 2.0 - vec2(1.0);
59
                lowp float mask = 1.0 - abs(coords.y);
60

61
                lowp vec3 rasterizationColor = mix(pixelLow, pixelHigh, mask);
62
                return mix(texel, rasterizationColor, intensity);
63
            }" : "") +
64

65
        "\n\n"
66

67
    property string min2: "
68
        float min2(vec2 v) {
69
            return min(v.x, v.y);
70
        }\n\n"
71

72
    property string rgb2grey: "
73
        float rgb2grey(vec3 v) {
74
            return dot(v, vec3(0.21, 0.72, 0.04));
75
        }\n\n"
76

77
    property string max2: "
78
        float max2(vec2 v) {
79
            return max(v.x, v.y);
80
        }\n\n"
81

82
    property string prod2: "
83
        float prod2(vec2 v) {
84
            return v.x * v.y;
85
        }\n\n"
86

87
    property string sum2: "
88
        float sum2(vec2 v) {
89
            return v.x + v.y;
90
        }\n\n"
91
}
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.