Initial workin version, see readme for build info.
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,4 +1,5 @@
|
||||
*.obj
|
||||
*.exe
|
||||
*.html
|
||||
__temp*.*
|
||||
__temp*.*
|
||||
*.dll
|
||||
|
||||
@ -6,7 +6,7 @@ PROJECT_INFO_FILE=prod.nfo
|
||||
PROJECT_SCREENSHOT=
|
||||
|
||||
# Currently active config file name
|
||||
ACTIVE_CONFIG=base.config
|
||||
ACTIVE_CONFIG=minified.config
|
||||
|
||||
# ------- GUI options/preferences --------
|
||||
# Automatically rebuild DLLs when things have changed?
|
||||
|
||||
8
4klang.h
8
4klang.h
@ -1,12 +1,12 @@
|
||||
// some useful song defines for 4klang
|
||||
#define SAMPLE_RATE 44100
|
||||
#define BPM 120.000000
|
||||
#define MAX_INSTRUMENTS 3
|
||||
#define MAX_PATTERNS 50
|
||||
#define BPM 133.000000
|
||||
#define MAX_INSTRUMENTS 5
|
||||
#define MAX_PATTERNS 52
|
||||
#define PATTERN_SIZE_SHIFT 4
|
||||
#define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT)
|
||||
#define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE)
|
||||
#define SAMPLES_PER_TICK 5512
|
||||
#define SAMPLES_PER_TICK 4973
|
||||
#define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS)
|
||||
#define POLYPHONY 1
|
||||
#define INTEGER_16BIT
|
||||
|
||||
317
4klang.inc
317
4klang.inc
@ -4,34 +4,41 @@
|
||||
%endmacro
|
||||
%define USE_SECTIONS
|
||||
%define SAMPLE_RATE 44100
|
||||
%define MAX_INSTRUMENTS 3
|
||||
%define MAX_INSTRUMENTS 5
|
||||
%define MAX_VOICES 1
|
||||
%define HLD 1
|
||||
%define BPM 120.000000
|
||||
%define MAX_PATTERNS 50
|
||||
%define BPM 133.000000
|
||||
%define MAX_PATTERNS 52
|
||||
%define PATTERN_SIZE_SHIFT 4
|
||||
%define PATTERN_SIZE (1 << PATTERN_SIZE_SHIFT)
|
||||
%define MAX_TICKS (MAX_PATTERNS*PATTERN_SIZE)
|
||||
%define SAMPLES_PER_TICK 5512
|
||||
%define DEF_LFO_NORMALIZE 0.0000453515
|
||||
%define SAMPLES_PER_TICK 4973
|
||||
%define DEF_LFO_NORMALIZE 0.0000502645
|
||||
%define MAX_SAMPLES (SAMPLES_PER_TICK*MAX_TICKS)
|
||||
%define GO4K_USE_16BIT_OUTPUT
|
||||
;%define GO4K_USE_GROOVE_PATTERN
|
||||
;%define GO4K_USE_ENVELOPE_RECORDINGS
|
||||
;%define GO4K_USE_NOTE_RECORDINGS
|
||||
%define GO4K_USE_NOTE_RECORDINGS
|
||||
%define GO4K_CLIP_OUTPUT
|
||||
%define GO4K_USE_DST
|
||||
%define GO4K_USE_DLL
|
||||
%define GO4K_USE_PAN
|
||||
%define GO4K_USE_GLOBAL_DLL
|
||||
%define GO4K_USE_ENV_CHECK
|
||||
%define GO4K_USE_ENV_MOD_GM
|
||||
%define GO4K_USE_VCO_CHECK
|
||||
%define GO4K_USE_VCO_PHASE_OFFSET
|
||||
%define GO4K_USE_VCO_SHAPE
|
||||
%define GO4K_USE_VCO_MOD_TM
|
||||
%define GO4K_USE_VCO_MOD_DM
|
||||
%define GO4K_USE_VCO_MOD_CM
|
||||
%define GO4K_USE_VCF_CHECK
|
||||
%define GO4K_USE_VCF_MOD_FM
|
||||
%define GO4K_USE_VCF_HIGH
|
||||
%define GO4K_USE_VCF_BAND
|
||||
%define GO4K_USE_VCF_PEAK
|
||||
%define GO4K_USE_VCF_STEREO
|
||||
%define GO4K_USE_DST_CHECK
|
||||
%define GO4K_USE_DLL_CHORUS
|
||||
%define GO4K_USE_DST_SH
|
||||
%define GO4K_USE_DLL_CHORUS_CLAMP
|
||||
%define GO4K_USE_DLL_DAMP
|
||||
%define GO4K_USE_DLL_DC_FILTER
|
||||
@ -445,25 +452,51 @@ section .data align=1
|
||||
%endif
|
||||
go4k_patterns
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
db 48, HLD, HLD, 48, HLD, HLD, 43, HLD, 41, HLD, HLD, 41, 0, 0, 0, 0,
|
||||
db 41, HLD, HLD, 41, HLD, HLD, 43, HLD, 48, HLD, HLD, 48, 0, 0, 0, 0,
|
||||
db 43, HLD, HLD, 43, HLD, HLD, 46, HLD, 48, HLD, HLD, 48, 0, 0, 0, 0,
|
||||
db 41, HLD, HLD, 41, HLD, HLD, 53, HLD, 41, HLD, HLD, 41, 0, 0, 0, 0,
|
||||
db 48, HLD, HLD, 48, HLD, HLD, 60, HLD, 48, HLD, HLD, 48, 0, 0, 0, 0,
|
||||
db 0, 0, 84, HLD, HLD, HLD, 79, 0, 82, 79, 0, 77, 0, 75, HLD, 0,
|
||||
db 72, 0, 72, 0, 75, 0, 82, 79, HLD, HLD, 79, 0, 0, 0, 0, 0,
|
||||
db 72, 0, 72, 0, 75, 0, 75, 72, HLD, HLD, 72, 0, 0, 0, 0, 0,
|
||||
db 87, HLD, HLD, HLD, 0, 0, 84, 0, 0, 0, 84, 0, 84, 0, 0, 0,
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 82, 0, 84, 82, 79,
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, HLD, 0, 89, 0, 87, 0,
|
||||
db 89, HLD, HLD, HLD, 0, 0, 84, 0, 0, 0, 84, 0, 84, 0, 0, 0,
|
||||
db 75, HLD, HLD, 75, HLD, HLD, 70, HLD, 68, HLD, HLD, 68, 0, 0, 0, 0,
|
||||
db 68, HLD, HLD, 68, HLD, HLD, 70, HLD, 75, HLD, HLD, 75, 0, 0, 0, 0,
|
||||
db 70, HLD, HLD, 70, HLD, HLD, 70, HLD, 75, HLD, HLD, 75, 0, 0, 0, 0,
|
||||
db 68, HLD, HLD, 68, HLD, HLD, 70, HLD, HLD, 70, HLD, HLD, 70, HLD, 0, 0,
|
||||
db 68, HLD, HLD, 68, HLD, HLD, 68, HLD, 70, HLD, HLD, 70, 0, 0, 70, HLD,
|
||||
db 70, HLD, HLD, 70, HLD, HLD, 75, HLD, HLD, 75, HLD, HLD, 75, HLD, 0, 0,
|
||||
db 70, HLD, HLD, 70, HLD, HLD, 70, HLD, 75, HLD, HLD, 75, 0, 0, 75, HLD,
|
||||
db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, 50, HLD, HLD,
|
||||
db 0, 0, 50, 0, 38, HLD, HLD, HLD, 50, 0, 50, 0, 38, HLD, HLD, HLD,
|
||||
db 0, 0, 38, 0, 38, HLD, 38, 38, 48, HLD, 50, HLD, 53, HLD, 52, HLD,
|
||||
db 38, 0, 38, 0, 38, HLD, HLD, HLD, HLD, HLD, 0, 0, 38, HLD, 50, HLD,
|
||||
db 0, 0, 50, 0, 38, 0, 38, 38, 46, HLD, 48, HLD, 57, HLD, 48, HLD,
|
||||
db 46, HLD, 0, 0, 46, HLD, HLD, HLD, 0, 0, 46, 0, 47, HLD, 48, HLD,
|
||||
db 0, 0, 48, 0, 36, HLD, HLD, HLD, 36, 0, 48, 0, 48, HLD, HLD, HLD,
|
||||
db 38, HLD, 0, 0, 38, HLD, HLD, HLD, 0, 0, 38, 0, 48, HLD, 50, HLD,
|
||||
db HLD, 0, 50, 0, 38, HLD, HLD, HLD, 38, HLD, 50, HLD, 48, HLD, 36, HLD,
|
||||
db 43, HLD, 0, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, HLD, HLD, 55, HLD,
|
||||
db 41, 0, 41, 0, 41, HLD, HLD, HLD, 53, HLD, 41, HLD, 41, HLD, HLD, HLD,
|
||||
db 40, HLD, 0, 0, 40, HLD, HLD, HLD, 52, HLD, 40, HLD, HLD, HLD, 52, HLD,
|
||||
db 45, 0, 45, 0, 45, HLD, HLD, HLD, 57, HLD, 45, HLD, 45, HLD, HLD, HLD,
|
||||
db 50, HLD, 0, 0, 50, HLD, HLD, HLD, 62, HLD, 50, HLD, HLD, HLD, 62, HLD,
|
||||
db 43, 0, 43, 0, 43, HLD, HLD, HLD, 55, HLD, 43, HLD, 43, HLD, HLD, HLD,
|
||||
db 48, HLD, 0, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, HLD, HLD, 60, HLD,
|
||||
db 48, 0, 48, 0, 48, HLD, HLD, HLD, 60, HLD, 48, HLD, 48, HLD, HLD, HLD,
|
||||
db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD,
|
||||
db HLD, HLD, 48, HLD, HLD, HLD, 48, 48, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD,
|
||||
db 48, HLD, HLD, 48, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD,
|
||||
db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 48, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD,
|
||||
db 48, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD,
|
||||
db 0, 0, 0, 0, 0, 0, 0, 0, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, 60, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 60, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 48, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 74, HLD, HLD, HLD, HLD, HLD, 69, HLD, HLD, HLD, HLD, HLD, 72, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 74, HLD, HLD, HLD, 76, HLD, HLD, HLD,
|
||||
db 77, HLD, HLD, HLD, 76, HLD, 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
db 74, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 0, 0, 0, 0,
|
||||
db 70, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 72, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 77, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 79, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 81, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, 76, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 67, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 69, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 73, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
db 71, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD, HLD,
|
||||
go4k_patterns_end
|
||||
%ifdef USE_SECTIONS
|
||||
section .g4kmuc2 data align=1
|
||||
@ -471,9 +504,11 @@ section .g4kmuc2 data align=1
|
||||
section .data
|
||||
%endif
|
||||
go4k_pattern_lists
|
||||
Instrument0List db 0, 0, 0, 0, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 0, 0, 0, 0, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3, 0, 0,
|
||||
Instrument1List db 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 6, 8, 6, 7, 6, 8, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 9, 11, 12, 11, 12, 0, 6, 7, 6, 8, 6, 7, 6, 8, 9, 11, 9, 0, 6, 7, 6, 8, 0, 0,
|
||||
Instrument2List db 13, 14, 13, 15, 13, 14, 13, 15, 13, 14, 13, 15, 13, 14, 13, 15, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 13, 14, 13, 15, 13, 14, 13, 15, 13, 14, 13, 0, 13, 14, 13, 15, 0, 0,
|
||||
Instrument0List db 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 4, 5, 1, 3, 1, 2, 6, 7, 8, 9, 6, 7, 1, 2, 10, 11, 12, 13, 14, 15, 16, 17, 10, 11, 12, 13, 14, 15, 16, 17, 1, 2, 1, 3, 1, 2, 1, 3, 1, 2, 1, 3,
|
||||
Instrument2List db 18, 19, 18, 19, 18, 19, 18, 19, 20, 21, 20, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 18, 21, 22, 21, 23, 19, 24, 21, 18, 19, 24, 21, 18, 19,
|
||||
Instrument3List db 25, 26, 27, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26, 28, 26,
|
||||
Instrument4List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 35, 36, 33, 37, 38, 39, 38, 37, 35, 36, 33, 37, 38, 39, 40, 39, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
Instrument5List db 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 29, 30, 33, 32, 29, 30, 31, 32, 29, 30, 33, 34, 42, 43, 35, 44, 36, 33, 36, 36, 42, 43, 35, 44, 36, 45, 43, 42, 38, 41, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
go4k_pattern_lists_end
|
||||
%ifdef USE_SECTIONS
|
||||
section .g4kmuc3 data align=1
|
||||
@ -483,45 +518,101 @@ section .data
|
||||
go4k_synth_instructions
|
||||
GO4K_BEGIN_CMDDEF(Instrument0)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_PAN_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Instrument2)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_DST_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_PAN_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Instrument3)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_PAN_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Instrument1)
|
||||
GO4K_BEGIN_CMDDEF(Instrument4)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_DST_ID
|
||||
db GO4K_PAN_ID
|
||||
db GO4K_DLL_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_DLL_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Instrument5)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FST_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_DLL_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_PAN_ID
|
||||
db GO4K_DLL_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Instrument2)
|
||||
db GO4K_ENV_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCO_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_FOP_ID
|
||||
db GO4K_VCF_ID
|
||||
db GO4K_OUT_ID
|
||||
GO4K_END_CMDDEF
|
||||
GO4K_BEGIN_CMDDEF(Global)
|
||||
db GO4K_ACC_ID
|
||||
db GO4K_DLL_ID
|
||||
@ -540,55 +631,111 @@ section .data
|
||||
%endif
|
||||
go4k_synth_parameter_values
|
||||
GO4K_BEGIN_PARAMDEF(Instrument0)
|
||||
GO4K_ENV ATTAC(5),DECAY(85),SUSTAIN(107),RELEASE(0),GAIN(128)
|
||||
GO4K_ENV ATTAC(59),DECAY(95),SUSTAIN(0),RELEASE(64),GAIN(91)
|
||||
GO4K_FST AMOUNT(80),DEST(6*MAX_UNIT_SLOTS+4+FST_SET)
|
||||
GO4K_ENV ATTAC(9),DECAY(85),SUSTAIN(113),RELEASE(38),GAIN(119)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO)
|
||||
GO4K_FST AMOUNT(52),DEST(11*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_VCF FREQUENCY(20),RESONANCE(23),VCFTYPE(LOWPASS)
|
||||
GO4K_PAN PANNING(64)
|
||||
GO4K_OUT GAIN(64), AUXSEND(0)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Instrument1)
|
||||
GO4K_ENV ATTAC(23),DECAY(66),SUSTAIN(20),RELEASE(64),GAIN(128)
|
||||
GO4K_ENV ATTAC(75),DECAY(77),SUSTAIN(20),RELEASE(64),GAIN(128)
|
||||
GO4K_FST AMOUNT(92),DEST(6*MAX_UNIT_SLOTS+4+FST_SET)
|
||||
GO4K_VCO TRANSPOSE(41),DETUNE(42),PHASE(55),GATES(85),COLOR(54),SHAPE(63),GAIN(128),FLAGS(SINE|LFO)
|
||||
GO4K_FST AMOUNT(75),DEST(12*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FST AMOUNT(59),DEST(12*MAX_UNIT_SLOTS+5+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(64),GAIN(128),FLAGS(PULSE)
|
||||
GO4K_VCO TRANSPOSE(74),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
|
||||
GO4K_FST AMOUNT(69),DEST(13*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(76),PHASE(22),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(60),PHASE(87),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(106),GAIN(128),FLAGS(SINE)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_VCF FREQUENCY(128),RESONANCE(89),VCFTYPE(LOWPASS|STEREO)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_VCF FREQUENCY(38),RESONANCE(45),VCFTYPE(BANDPASS)
|
||||
GO4K_FOP OP(FOP_PUSH)
|
||||
GO4K_VCF FREQUENCY(56),RESONANCE(80),VCFTYPE(BANDSTOP)
|
||||
GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(35),DEPTH(57),DELAY(17),COUNT(1)
|
||||
GO4K_FOP OP(FOP_XCH)
|
||||
GO4K_VCF FREQUENCY(45),RESONANCE(94),VCFTYPE(BANDSTOP)
|
||||
GO4K_DLL PREGAIN(64),DRY(128),FEEDBACK(64),DAMP(64),FREQUENCY(8),DEPTH(61),DELAY(18),COUNT(1)
|
||||
GO4K_OUT GAIN(64), AUXSEND(0)
|
||||
GO4K_PAN PANNING(63)
|
||||
GO4K_OUT GAIN(128), AUXSEND(55)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Instrument2)
|
||||
GO4K_ENV ATTAC(36),DECAY(75),SUSTAIN(0),RELEASE(64),GAIN(128)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(89),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(68),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(89),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_ENV ATTAC(0),DECAY(83),SUSTAIN(0),RELEASE(0),GAIN(100)
|
||||
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_ENV ATTAC(0),DECAY(73),SUSTAIN(0),RELEASE(0),GAIN(128)
|
||||
GO4K_DST DRIVE(27), SNHFREQ(128), FLAGS(0)
|
||||
GO4K_FST AMOUNT(86),DEST(6*MAX_UNIT_SLOTS+1+FST_SET)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_VCO TRANSPOSE(38),DETUNE(128),PHASE(20),GATES(85),COLOR(64),SHAPE(88),GAIN(90),FLAGS(TRISAW)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_PAN PANNING(64)
|
||||
GO4K_OUT GAIN(128), AUXSEND(0)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Instrument3)
|
||||
GO4K_ENV ATTAC(0),DECAY(74),SUSTAIN(0),RELEASE(0),GAIN(93)
|
||||
GO4K_FST AMOUNT(128),DEST(0*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_ENV ATTAC(0),DECAY(57),SUSTAIN(64),RELEASE(0),GAIN(128)
|
||||
GO4K_FST AMOUNT(66),DEST(6*MAX_UNIT_SLOTS+1+FST_SET)
|
||||
GO4K_FST AMOUNT(58),DEST(7*MAX_UNIT_SLOTS+1+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(63),DETUNE(64),PHASE(0),GATES(85),COLOR(64),SHAPE(127),GAIN(83),FLAGS(NOISE)
|
||||
GO4K_VCO TRANSPOSE(62),DETUNE(59),PHASE(14),GATES(85),COLOR(64),SHAPE(89),GAIN(67),FLAGS(SINE)
|
||||
GO4K_VCO TRANSPOSE(68),DETUNE(64),PHASE(0),GATES(85),COLOR(42),SHAPE(65),GAIN(14),FLAGS(TRISAW)
|
||||
GO4K_VCF FREQUENCY(98),RESONANCE(128),VCFTYPE(LOWPASS)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_VCO TRANSPOSE(71),DETUNE(64),PHASE(0),GATES(0),COLOR(64),SHAPE(85),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_FOP OP(FOP_PUSH)
|
||||
GO4K_VCF FREQUENCY(36),RESONANCE(49),VCFTYPE(BANDPASS)
|
||||
GO4K_VCF FREQUENCY(22),RESONANCE(11),VCFTYPE(HIGHPASS)
|
||||
GO4K_PAN PANNING(64)
|
||||
GO4K_OUT GAIN(45), AUXSEND(28)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Instrument4)
|
||||
GO4K_ENV ATTAC(79),DECAY(96),SUSTAIN(95),RELEASE(82),GAIN(128)
|
||||
GO4K_FST AMOUNT(68),DEST(0*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(59),PHASE(0),GATES(85),COLOR(52),SHAPE(64),GAIN(128),FLAGS(PULSE)
|
||||
GO4K_VCO TRANSPOSE(76),DETUNE(64),PHASE(64),GATES(85),COLOR(101),SHAPE(127),GAIN(111),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(32),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(TRISAW|LFO)
|
||||
GO4K_FST AMOUNT(61),DEST(2*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FST AMOUNT(63),DEST(3*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_VCF FREQUENCY(26),RESONANCE(36),VCFTYPE(PEAK)
|
||||
GO4K_VCF FREQUENCY(80),RESONANCE(44),VCFTYPE(LOWPASS)
|
||||
GO4K_DST DRIVE(109), SNHFREQ(85), FLAGS(0)
|
||||
GO4K_PAN PANNING(64)
|
||||
GO4K_DLL PREGAIN(72),DRY(123),FEEDBACK(90),DAMP(49),FREQUENCY(0),DEPTH(0),DELAY(17),COUNT(1)
|
||||
GO4K_FOP OP(FOP_XCH)
|
||||
GO4K_VCF FREQUENCY(49),RESONANCE(28),VCFTYPE(BANDPASS)
|
||||
GO4K_OUT GAIN(46), AUXSEND(0)
|
||||
GO4K_DLL PREGAIN(98),DRY(112),FEEDBACK(62),DAMP(45),FREQUENCY(0),DEPTH(0),DELAY(18),COUNT(1)
|
||||
GO4K_FOP OP(FOP_XCH)
|
||||
GO4K_OUT GAIN(59), AUXSEND(59)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Instrument5)
|
||||
GO4K_ENV ATTAC(64),DECAY(70),SUSTAIN(70),RELEASE(88),GAIN(128)
|
||||
GO4K_VCO TRANSPOSE(69),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
|
||||
GO4K_FST AMOUNT(72),DEST(11*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(73),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
|
||||
GO4K_FST AMOUNT(56),DEST(12*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FST AMOUNT(56),DEST(12*MAX_UNIT_SLOTS+5+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(77),DETUNE(64),PHASE(0),GATES(85),COLOR(128),SHAPE(64),GAIN(128),FLAGS(SINE|LFO)
|
||||
GO4K_FST AMOUNT(72),DEST(13*MAX_UNIT_SLOTS+2+FST_SET)
|
||||
GO4K_FOP OP(FOP_POP)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_VCO TRANSPOSE(64),DETUNE(64),PHASE(0),GATES(85),COLOR(0),SHAPE(64),GAIN(128),FLAGS(TRISAW)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_FOP OP(FOP_ADDP)
|
||||
GO4K_VCF FREQUENCY(104),RESONANCE(96),VCFTYPE(LOWPASS)
|
||||
GO4K_FOP OP(FOP_MULP)
|
||||
GO4K_DLL PREGAIN(64),DRY(64),FEEDBACK(64),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(19),COUNT(1)
|
||||
GO4K_PAN PANNING(64)
|
||||
GO4K_DLL PREGAIN(128),DRY(0),FEEDBACK(0),DAMP(0),FREQUENCY(0),DEPTH(0),DELAY(20),COUNT(1)
|
||||
GO4K_OUT GAIN(128), AUXSEND(47)
|
||||
GO4K_END_PARAMDEF
|
||||
GO4K_BEGIN_PARAMDEF(Global)
|
||||
GO4K_ACC ACCTYPE(AUX)
|
||||
GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(113),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(1),COUNT(8)
|
||||
GO4K_DLL PREGAIN(39),DRY(90),FEEDBACK(93),DAMP(62),FREQUENCY(0),DEPTH(0),DELAY(1),COUNT(8)
|
||||
GO4K_FOP OP(FOP_XCH)
|
||||
GO4K_DLL PREGAIN(40),DRY(128),FEEDBACK(103),DAMP(64),FREQUENCY(0),DEPTH(0),DELAY(9),COUNT(8)
|
||||
GO4K_DLL PREGAIN(41),DRY(128),FEEDBACK(93),DAMP(74),FREQUENCY(0),DEPTH(0),DELAY(9),COUNT(8)
|
||||
GO4K_FOP OP(FOP_XCH)
|
||||
GO4K_ACC ACCTYPE(OUTPUT)
|
||||
GO4K_FOP OP(FOP_ADDP2)
|
||||
GO4K_OUT GAIN(64), AUXSEND(16)
|
||||
GO4K_OUT GAIN(67), AUXSEND(0)
|
||||
GO4K_END_PARAMDEF
|
||||
go4k_synth_parameter_values_end
|
||||
%ifdef USE_SECTIONS
|
||||
@ -616,6 +763,8 @@ _go4k_delay_times
|
||||
dw 1516
|
||||
dw 1580
|
||||
dw 1642
|
||||
dw 22050
|
||||
dw 16537
|
||||
dw 19894
|
||||
dw 13263
|
||||
dw 29842
|
||||
dw 512
|
||||
%endif
|
||||
|
||||
272
_shader.glsl
Normal file
272
_shader.glsl
Normal file
@ -0,0 +1,272 @@
|
||||
// Compofiller Studio by Yzi 2018
|
||||
//
|
||||
// Default template shader
|
||||
|
||||
// This shader program is executed in the GPU (or a CPU-based emulation) for
|
||||
// every pixel (i.e. "fragment" in OpenGL jargon) of every frame.
|
||||
|
||||
// The "uniforms" are the same (i.e. uniform) for all pixels/fragments of the frame,
|
||||
// and they come from the main program.
|
||||
uniform float time;
|
||||
uniform vec2 resolution;
|
||||
|
||||
// If you choose to save some bytes and not use either of these uniforms, you have to
|
||||
// do some additional tricks.
|
||||
// * time : if you uncheck "[ ] Use time uniform" checkbox, time is in gl_Color.y (green component)
|
||||
// * resolution : if you uncheck "[ ] Use resolution uniform" checkbox, you'll have to hard-code the resolution manually
|
||||
|
||||
// The uniform-less version could look like this, 88200.0 being the time divider
|
||||
//float time = gl_Color.y * 256.0 * (65536.0 / 88200.0);
|
||||
//vec2 resolution = vec2(1280.0, 720.0);
|
||||
|
||||
// Uncomment this to use the texture-based features
|
||||
uniform sampler2D texture_sampler;
|
||||
|
||||
// Uncomment this to use the texture-based features
|
||||
uniform sampler2D texts;
|
||||
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
||||
// Created by S. Guillitte 2015
|
||||
|
||||
float zoom=1.;
|
||||
|
||||
vec2 cmul( vec2 a, vec2 b ) { return vec2( a.x*b.x - a.y*b.y, a.x*b.y + a.y*b.x ); }
|
||||
vec2 csqr( vec2 a ) { return vec2( a.x*a.x - a.y*a.y, 2.*a.x*a.y ); }
|
||||
|
||||
|
||||
mat2 rot(float a) {
|
||||
return mat2(cos(a),sin(a),-sin(a),cos(a));
|
||||
}
|
||||
|
||||
vec2 iSphere( in vec3 ro, in vec3 rd, in vec4 sph )//from iq
|
||||
{
|
||||
vec3 oc = ro - sph.xyz;
|
||||
float b = dot( oc, rd );
|
||||
float c = dot( oc, oc ) - sph.w*sph.w;
|
||||
float h = b*b - c;
|
||||
if( h<0.0 ) return vec2(-1.0);
|
||||
h = sqrt(h);
|
||||
return vec2(-b-h, -b+h );
|
||||
}
|
||||
|
||||
float map(in vec3 p) {
|
||||
|
||||
float res = 0.;
|
||||
|
||||
vec3 c = p;
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
p =.7*abs(p)/dot(p,p) -.7;
|
||||
p.yz= csqr(p.yz);
|
||||
p=p.zxy;
|
||||
res += exp(-19. * abs(dot(p,c)));
|
||||
|
||||
}
|
||||
return res/2.;
|
||||
}
|
||||
|
||||
|
||||
|
||||
vec3 raymarch( in vec3 ro, vec3 rd, vec2 tminmax )
|
||||
{
|
||||
float t = tminmax.x;
|
||||
float dt = .02;
|
||||
//float dt = .2 - .195*cos(iTime*.05);//animated
|
||||
vec3 col= vec3(0.);
|
||||
float c = 0.;
|
||||
for( int i=0; i<64; i++ )
|
||||
{
|
||||
t+=dt*exp(-2.*c);
|
||||
if(t>tminmax.y)break;
|
||||
|
||||
c = map(ro+t*rd);
|
||||
|
||||
col = .99*col+ .08*vec3(c*c, c, c*c*c);//green
|
||||
//col = .99*col+ .08*vec3(c*c*c, c*c, c);//blue
|
||||
}
|
||||
return col;
|
||||
}
|
||||
|
||||
|
||||
void CoolSphere( out vec4 fragColor, in vec2 fragCoord )
|
||||
{
|
||||
float time = time;
|
||||
vec2 q = fragCoord.xy / resolution.xy;
|
||||
vec2 p = -1.0 + 2.0 * q;
|
||||
p.x *= resolution.x/resolution.y;
|
||||
vec2 m = vec2(0.);
|
||||
m-=.5;
|
||||
|
||||
// camera
|
||||
|
||||
vec3 ro = zoom*vec3(4.);
|
||||
ro.yz*=rot(m.y);
|
||||
ro.xz*=rot(m.x+ 0.1*time);
|
||||
vec3 ta = vec3( 0.0 , 0.0, 0.0 );
|
||||
vec3 ww = normalize( ta - ro );
|
||||
vec3 uu = normalize( cross(ww,vec3(0.0,1.0,0.0) ) );
|
||||
vec3 vv = normalize( cross(uu,ww));
|
||||
vec3 rd = normalize( p.x*uu + p.y*vv + 4.0*ww );
|
||||
|
||||
|
||||
vec2 tmm = iSphere( ro, rd, vec4(0.,0.,0.,2.) );
|
||||
|
||||
// raymarch
|
||||
vec3 col = raymarch(ro,rd,tmm);
|
||||
if (tmm.x<0.)col = texture2D(texture_sampler, rd).rgb;
|
||||
else {
|
||||
vec3 nor=(ro+tmm.x*rd)/2.;
|
||||
nor = reflect(rd, nor);
|
||||
float fre = pow(.5+ clamp(dot(nor,rd),0.0,1.0), 3. )*1.3;
|
||||
col += texture2D(texture_sampler, nor).rgb * fre;
|
||||
|
||||
}
|
||||
|
||||
// shade
|
||||
|
||||
col = .5 *(log(1.+col));
|
||||
col = clamp(col,0.,1.);
|
||||
fragColor = vec4( col, 1.0 );
|
||||
|
||||
}
|
||||
|
||||
|
||||
float bar = time; // this is just a coding nicety to highlight that in some calculations we want musical time ... you wouldn't want to have this in a real prod's final version
|
||||
// --- noise from procedural pseudo-Perlin (better but not so nice derivatives) ---------
|
||||
// ( adapted from IQ )
|
||||
|
||||
float gTime = 0.;
|
||||
|
||||
float sdBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 q = abs(p) - b;
|
||||
return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
|
||||
}
|
||||
|
||||
float box(vec3 pos, float scale) {
|
||||
pos *= scale;
|
||||
float base = sdBox(pos, vec3(.4,.4,.1)) /1.5;
|
||||
pos.xy *= 5.;
|
||||
pos.y -= 3.5;
|
||||
pos.xy *= rot(.75);
|
||||
float result = -base;
|
||||
return result;
|
||||
}
|
||||
|
||||
float box_set(vec3 pos, float time) {
|
||||
vec3 pos_origin = pos;
|
||||
pos = pos_origin;
|
||||
pos .y += sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box1 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .y -=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box2 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .x +=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box3 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .x -=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box4 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.xy *= rot(.8);
|
||||
float box5 = box(pos,.5) * 6.;
|
||||
pos = pos_origin;
|
||||
float box6 = box(pos,.5) * 6.;
|
||||
float result = max(max(max(max(max(box1,box2),box3),box4),box5),box6);
|
||||
return result;
|
||||
}
|
||||
|
||||
float map(vec3 pos, float time) {
|
||||
vec3 pos_origin = pos;
|
||||
float box_set1 = box_set(pos, time);
|
||||
|
||||
return box_set1;
|
||||
}
|
||||
|
||||
|
||||
void mainImage2( out vec4 fragColor, in vec2 fragCoord ) {
|
||||
vec2 p = (fragCoord.xy * 2. - resolution.xy) / min(resolution.x, resolution.y);
|
||||
vec3 ro = vec3(0., -0.2 ,time * 4.);
|
||||
vec3 ray = normalize(vec3(p, 1.5));
|
||||
ray.xy = ray.xy * rot(sin(time * .03) * 5.);
|
||||
ray.yz = ray.yz * rot(sin(time * .05) * .2);
|
||||
float t = 0.1;
|
||||
vec3 col = vec3(0.);
|
||||
float ac = 0.0;
|
||||
|
||||
|
||||
for (int i = 0; i < 99; i++){
|
||||
vec3 pos = ro + ray * t;
|
||||
pos = mod(pos-2., 4.) -2.;
|
||||
gTime = time -float(i) * 0.01;
|
||||
|
||||
float d = map(pos, time);
|
||||
|
||||
d = max(abs(d), 0.01);
|
||||
ac += exp(-d*23.);
|
||||
|
||||
t += d* 0.55;
|
||||
}
|
||||
|
||||
col = vec3(ac * 0.02);
|
||||
|
||||
col +=vec3(0.,0.2 * abs(sin(time)),0.5 + sin(time) * 0.2);
|
||||
|
||||
|
||||
fragColor = vec4(col ,1.0 - t * (0.02 + 0.02 * sin (time)));
|
||||
}
|
||||
|
||||
float noise3( vec3 x ) {
|
||||
vec3 p = floor(x),f = fract(x);
|
||||
|
||||
f = f*f*(3.-2.*f); // or smoothstep // to make derivative continuous at borders
|
||||
|
||||
#define hash3(p) fract(sin(1e3*dot(p,vec3(1,57,-13.7)))*4375.5453) // rand
|
||||
|
||||
return mix( mix(mix( hash3(p+vec3(0,0,0)), hash3(p+vec3(1,0,0)),f.x), // triilinear interp
|
||||
mix( hash3(p+vec3(0,1,0)), hash3(p+vec3(1,1,0)),f.x),f.y),
|
||||
mix(mix( hash3(p+vec3(0,0,1)), hash3(p+vec3(1,0,1)),f.x),
|
||||
mix( hash3(p+vec3(0,1,1)), hash3(p+vec3(1,1,1)),f.x),f.y), f.z);
|
||||
}
|
||||
|
||||
#define noise(x) (noise3(x)+noise3(x+11.5)) / 2. // pseudoperlin improvement from foxes idea
|
||||
|
||||
void mainImage3( out vec4 O, vec2 U ) // ------------ draw isovalues
|
||||
{
|
||||
vec2 R = resolution.xy;
|
||||
float n = noise(vec3(U*8./R.y, .1*time)),
|
||||
v = sin(6.28*10.*n),
|
||||
t = time;
|
||||
|
||||
v = smoothstep(1.,0., .5*abs(v)/fwidth(v));
|
||||
|
||||
O = mix( exp(-33./R.y )* texture2D( texture_sampler, (U+vec2(1,sin(t)))/R), // .97
|
||||
.5+.5*sin(12.*n+vec4(0,2.1,-2.1,0)),
|
||||
v );
|
||||
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec3 l;
|
||||
|
||||
float abstime = abs(time);
|
||||
if (abstime < 10.0)
|
||||
CoolSphere(gl_FragColor, gl_FragCoord.xy);
|
||||
else if (abstime < 15.0)
|
||||
{
|
||||
mainImage2(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainImage3(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
|
||||
vec2 texttop = vec2(0., -.35), pt = (gl_FragCoord.xy / resolution) - texttop;
|
||||
if (pt.y > 0.) l = gl_FragColor + texture2D(texts, pt);
|
||||
gl_FragColor = vec4(l * (1.0), 1.0);
|
||||
|
||||
}
|
||||
24
base.config
24
base.config
@ -3,13 +3,13 @@
|
||||
# Base configuration file
|
||||
|
||||
########### Music #############
|
||||
MUSIC_4KLANG_INC_FILE=
|
||||
MUSIC_4KLANG_INC_FILE=4klang.inc
|
||||
MUSIC_BEATS_PER_BAR=4.0
|
||||
|
||||
########### Visuals ############
|
||||
SHADER_FILE=shader.glsl
|
||||
RESOLUTION_X=1920
|
||||
RESOLUTION_Y=1080
|
||||
RESOLUTION_X=1280
|
||||
RESOLUTION_Y=720
|
||||
|
||||
USE_TIME_UNIFORM=1
|
||||
TIME_UNIFORM_NAME='time'
|
||||
@ -29,7 +29,7 @@ USE_TEXTS_UNIFORM=1
|
||||
TEXTS_UNIFORM_NAME='texts'
|
||||
TEXT_BITMAP_RESOLUTION_X=1024
|
||||
TEXT_BITMAP_RESOLUTION_Y=1024
|
||||
TEXT_FONT_NAME='Arial'
|
||||
TEXT_FONT_NAME='Segoe UI Black'
|
||||
TEXT_FONT_SIZE=120
|
||||
TEXT_FONT_STRIKEOUT=0
|
||||
TEXT_FONT_UNDERLINE=0
|
||||
@ -39,33 +39,31 @@ TEXT_FONT_ORIENTATION=0
|
||||
TEXT_FONT_ESCAPEMENT=0
|
||||
TEXT_FONT_WIDTH=0
|
||||
TEXT_CHARACTER_EXTRA_SPACING=0
|
||||
USE_WIDECHAR_TEXTS=0
|
||||
USE_WIDECHAR_TEXTS=1
|
||||
|
||||
########### Time base ###########
|
||||
USE_TIME_DIVIDER_IN_X86_CODE=1
|
||||
TIME_DIVIDER=88200.000
|
||||
TIME_DIVIDER=79578.945
|
||||
TIME_BASE=bars
|
||||
|
||||
AUDIO_DELAY=2048
|
||||
PROD_END_TIME=4411648
|
||||
PROD_END_TIME=4139584
|
||||
|
||||
|
||||
########### Final product ###########
|
||||
# The name of the final EXE
|
||||
OUTPUT_EXE_NAME=testing.exe
|
||||
OUTPUT_EXE_NAME=4k_test.exe
|
||||
|
||||
# this is just the name/text of the GUI option, not the name of the linker executable
|
||||
EXE_LINKER_PROGRAM=Crinkler
|
||||
|
||||
QUOTE=\"
|
||||
|
||||
CRINKLER_ORDERTRIES=4000
|
||||
|
||||
CRINKLER_ORDERTRIES=100
|
||||
|
||||
|
||||
AUDIO_BUFFER_ALLOCATED_LENGTH=4411648
|
||||
AUDIO_BUFFER_ALLOCATED_LENGTH=4139584
|
||||
AUDIO_SAMPLING_RATE=44100
|
||||
LOOP_END=5.0
|
||||
LOOP_START=3.0
|
||||
LOOP_ENABLED=0
|
||||
TIME_DIVIDER_INT=88200
|
||||
TIME_DIVIDER_INT=79578
|
||||
|
||||
@ -89,7 +89,7 @@ ifeq ($(EXE_LINKER_PROGRAM),Crinkler)
|
||||
# Crinkler settings
|
||||
# Linker for building standalone EXE files for running
|
||||
FINAL_LINKER_EXE="$(PROGRAM_DIR)\Tools\Crinkler\crinkler.exe"
|
||||
FINAL_LINKER_OPTS=/SUBSYSTEM:WINDOWS /ENTRY:t /COMPMODE:SLOW /HASHSIZE:200 /HASHTRIES:50 /ORDERTRIES:$(CRINKLER_ORDERTRIES) \
|
||||
FINAL_LINKER_OPTS=/SUBSYSTEM:WINDOWS /ENTRY:t /COMPMODE:VERYSLOW /HASHSIZE:500 /HASHTRIES:100 /ORDERTRIES:$(CRINKLER_ORDERTRIES) \
|
||||
/UNSAFEIMPORT /LIBPATH:$(LIB_PATH) /REPORT:crinkler_report.html /PROGRESSGUI
|
||||
FINAL_LINKER_OUT_OPT=/OUT:
|
||||
FINAL_LINKER_GENERAL_LIBS_PARAMS=kernel32.lib user32.lib
|
||||
|
||||
BIN
debug_audio.dll
BIN
debug_audio.dll
Binary file not shown.
Binary file not shown.
@ -11,3 +11,11 @@ RESOLUTION_Y=720
|
||||
|
||||
CRINKLER_ORDERTRIES=4000
|
||||
OUTPUT_EXE_NAME=release.exe
|
||||
SHADER_FILE=shader_minified.h
|
||||
TIME_UNIFORM_NAME='v'
|
||||
RESOLUTION_UNIFORM_NAME='s'
|
||||
TEXTS_UNIFORM_NAME='m'
|
||||
EXE_LINKER_PROGRAM=Crinkler
|
||||
TIME_BASE=bars
|
||||
TIME_DIVIDER=79578.945
|
||||
TIME_DIVIDER_INT=79578
|
||||
|
||||
@ -8,4 +8,9 @@ include $(PARENT_CONFIG)
|
||||
|
||||
# Visuals
|
||||
EXE_LINKER_PROGRAM=Crinkler
|
||||
CRINKLER_ORDERTRIES=100
|
||||
CRINKLER_ORDERTRIES=4000
|
||||
SHADER_FILE=shader_minified.h
|
||||
TIME_UNIFORM_NAME='v'
|
||||
RESOLUTION_UNIFORM_NAME='s'
|
||||
TEXTS_UNIFORM_NAME='c'
|
||||
USE_WIDECHAR_TEXTS=1
|
||||
|
||||
389
shader.glsl
389
shader.glsl
@ -1,314 +1,205 @@
|
||||
// Compofiller Studio by Yzi 2018
|
||||
//
|
||||
// Default template shader
|
||||
|
||||
// This shader program is executed in the GPU (or a CPU-based emulation) for
|
||||
// every pixel (i.e. "fragment" in OpenGL jargon) of every frame.
|
||||
|
||||
// The "uniforms" are the same (i.e. uniform) for all pixels/fragments of the frame,
|
||||
// and they come from the main program.
|
||||
uniform float time;
|
||||
uniform vec2 resolution;
|
||||
|
||||
// If you choose to save some bytes and not use either of these uniforms, you have to
|
||||
// do some additional tricks.
|
||||
// * time : if you uncheck "[ ] Use time uniform" checkbox, time is in gl_Color.y (green component)
|
||||
// * resolution : if you uncheck "[ ] Use resolution uniform" checkbox, you'll have to hard-code the resolution manually
|
||||
|
||||
// The uniform-less version could look like this, 88200.0 being the time divider
|
||||
//float time = gl_Color.y * 256.0 * (65536.0 / 88200.0);
|
||||
//vec2 resolution = vec2(1280.0, 720.0);
|
||||
|
||||
// Uncomment this to use the texture-based features
|
||||
uniform sampler2D texture_sampler;
|
||||
|
||||
// Uncomment this to use the texture-based features
|
||||
uniform sampler2D texts;
|
||||
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
||||
// Created by S. Guillitte 2015
|
||||
float zoom = 1.;
|
||||
float gTime = 0.;
|
||||
|
||||
float zoom=1.;
|
||||
|
||||
vec2 cmul( vec2 a, vec2 b ) { return vec2( a.x*b.x - a.y*b.y, a.x*b.y + a.y*b.x ); }
|
||||
vec2 csqr( vec2 a ) { return vec2( a.x*a.x - a.y*a.y, 2.*a.x*a.y ); }
|
||||
|
||||
|
||||
mat2 rot(float a) {
|
||||
return mat2(cos(a),sin(a),-sin(a),cos(a));
|
||||
int getBeat(void) {
|
||||
return floor(abs(time*4) / (60./133) );
|
||||
}
|
||||
int getBar(void) {
|
||||
return floor(abs(time) / (60./133));
|
||||
}
|
||||
|
||||
vec2 iSphere( in vec3 ro, in vec3 rd, in vec4 sph )//from iq
|
||||
vec2 csqr(vec2 a) {
|
||||
return vec2(a.x * a.x - a.y * a.y, 2. * a.x * a.y);
|
||||
}
|
||||
|
||||
mat2 rot(float a) {
|
||||
return mat2(cos(a), sin(a), -sin(a), cos(a));
|
||||
}
|
||||
|
||||
vec2 iSphere(in vec3 ro, in vec3 rd, in vec4 sph)//from iq
|
||||
{
|
||||
vec3 oc = ro - sph.xyz;
|
||||
float b = dot( oc, rd );
|
||||
float c = dot( oc, oc ) - sph.w*sph.w;
|
||||
float h = b*b - c;
|
||||
if( h<0.0 ) return vec2(-1.0);
|
||||
h = sqrt(h);
|
||||
return vec2(-b-h, -b+h );
|
||||
vec3 oc = ro - sph.xyz;
|
||||
float b = dot(oc, rd);
|
||||
float c = dot(oc, oc) - sph.w * sph.w;
|
||||
float h = b * b - c;
|
||||
if(h < 0.0)
|
||||
return vec2(-1.0);
|
||||
h = sqrt(h);
|
||||
return vec2(-b - h, -b + h);
|
||||
}
|
||||
|
||||
float map(in vec3 p) {
|
||||
|
||||
float res = 0.;
|
||||
|
||||
|
||||
float res = 0.;
|
||||
|
||||
vec3 c = p;
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
p =.7*abs(p)/dot(p,p) -.7;
|
||||
p.yz= csqr(p.yz);
|
||||
p=p.zxy;
|
||||
res += exp(-19. * abs(dot(p,c)));
|
||||
|
||||
}
|
||||
return res/2.;
|
||||
for(int i = 0; i < 10; ++i) {
|
||||
p = .7 * abs(p) / dot(p, p) - .7;
|
||||
p.yz = csqr(p.yz);
|
||||
p = p.zxy;
|
||||
res += exp(-19. * abs(dot(p, c)));
|
||||
|
||||
}
|
||||
return res / 2.;
|
||||
}
|
||||
|
||||
|
||||
|
||||
vec3 raymarch( in vec3 ro, vec3 rd, vec2 tminmax )
|
||||
{
|
||||
vec3 raymarch(in vec3 ro, vec3 rd, vec2 tminmax) {
|
||||
float t = tminmax.x;
|
||||
float dt = .02;
|
||||
//float dt = .2 - .195*cos(iTime*.05);//animated
|
||||
vec3 col= vec3(0.);
|
||||
vec3 col = vec3(0.);
|
||||
float c = 0.;
|
||||
for( int i=0; i<64; i++ )
|
||||
{
|
||||
t+=dt*exp(-2.*c);
|
||||
if(t>tminmax.y)break;
|
||||
|
||||
c = map(ro+t*rd);
|
||||
|
||||
col = .99*col+ .08*vec3(c*c, c, c*c*c);//green
|
||||
for(int i = 0; i < 64; i++) {
|
||||
t += dt * exp(-2. * c);
|
||||
if(t > tminmax.y)
|
||||
break;
|
||||
|
||||
c = map(ro + t * rd);
|
||||
|
||||
col = .99 * col + .08 * vec3(c * c, c, c * c * c);//green
|
||||
//col = .99*col+ .08*vec3(c*c*c, c*c, c);//blue
|
||||
}
|
||||
}
|
||||
return col;
|
||||
}
|
||||
|
||||
|
||||
void CoolSphere( out vec4 fragColor, in vec2 fragCoord )
|
||||
{
|
||||
float time = time;
|
||||
void CoolSphere(out vec4 fragColor, in vec2 fragCoord) {
|
||||
float time = time;
|
||||
vec2 q = fragCoord.xy / resolution.xy;
|
||||
vec2 p = -1.0 + 2.0 * q;
|
||||
p.x *= resolution.x/resolution.y;
|
||||
p.x *= resolution.x / resolution.y;
|
||||
vec2 m = vec2(0.);
|
||||
m-=.5;
|
||||
m -= .5;
|
||||
|
||||
// camera
|
||||
|
||||
vec3 ro = zoom*vec3(4.);
|
||||
ro.yz*=rot(m.y);
|
||||
ro.xz*=rot(m.x+ 0.1*time);
|
||||
vec3 ta = vec3( 0.0 , 0.0, 0.0 );
|
||||
vec3 ww = normalize( ta - ro );
|
||||
vec3 uu = normalize( cross(ww,vec3(0.0,1.0,0.0) ) );
|
||||
vec3 vv = normalize( cross(uu,ww));
|
||||
vec3 rd = normalize( p.x*uu + p.y*vv + 4.0*ww );
|
||||
vec3 ro = zoom * vec3(4.);
|
||||
ro.yz *= rot(m.y);
|
||||
ro.xz *= rot(m.x + 0.1 * time);
|
||||
vec3 ta = vec3(0.0, 0.0, 0.0);
|
||||
vec3 ww = normalize(ta - ro);
|
||||
vec3 uu = normalize(cross(ww, vec3(0.0, 1.0, 0.0)));
|
||||
vec3 vv = normalize(cross(uu, ww));
|
||||
vec3 rd = normalize(p.x * uu + p.y * vv + 4.0 * ww);
|
||||
|
||||
|
||||
vec2 tmm = iSphere( ro, rd, vec4(0.,0.,0.,2.) );
|
||||
vec2 tmm = iSphere(ro, rd, vec4(0., 0., 0., 2.));
|
||||
|
||||
// raymarch
|
||||
vec3 col = raymarch(ro,rd,tmm);
|
||||
if (tmm.x<0.)col = texture2D(texture_sampler, rd).rgb;
|
||||
vec3 col = raymarch(ro, rd, tmm);
|
||||
if(tmm.x < 0.)
|
||||
col = texture2D(texture_sampler, rd).rgb;
|
||||
else {
|
||||
vec3 nor=(ro+tmm.x*rd)/2.;
|
||||
nor = reflect(rd, nor);
|
||||
float fre = pow(.5+ clamp(dot(nor,rd),0.0,1.0), 3. )*1.3;
|
||||
vec3 nor = (ro + tmm.x * rd) / 2.;
|
||||
nor = reflect(rd, nor);
|
||||
float fre = pow(.5 + clamp(dot(nor, rd), 0.0, 1.0), 3.) * 1.3;
|
||||
col += texture2D(texture_sampler, nor).rgb * fre;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
// shade
|
||||
|
||||
col = .5 *(log(1.+col));
|
||||
col = clamp(col,0.,1.);
|
||||
fragColor = vec4( col, 1.0 );
|
||||
|
||||
col = .5 * (log(1. + col));
|
||||
col = clamp(col, 0., 1.);
|
||||
fragColor = vec4(col, 1.0);
|
||||
|
||||
}
|
||||
|
||||
|
||||
float bar = time; // this is just a coding nicety to highlight that in some calculations we want musical time ... you wouldn't want to have this in a real prod's final version
|
||||
// --- noise from procedural pseudo-Perlin (better but not so nice derivatives) ---------
|
||||
// ( adapted from IQ )
|
||||
|
||||
float gTime = 0.;
|
||||
|
||||
float sdBox( vec3 p, vec3 b )
|
||||
{
|
||||
vec3 q = abs(p) - b;
|
||||
return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
|
||||
float sdBox(vec3 p, vec3 b) {
|
||||
vec3 q = abs(p) - b;
|
||||
return length(max(q, 0.0)) + min(max(q.x, max(q.y, q.z)), 0.0);
|
||||
}
|
||||
|
||||
float box(vec3 pos, float scale) {
|
||||
pos *= scale;
|
||||
float base = sdBox(pos, vec3(.4,.4,.1)) /1.5;
|
||||
pos.xy *= 5.;
|
||||
pos.y -= 3.5;
|
||||
pos.xy *= rot(.75);
|
||||
float result = -base;
|
||||
return result;
|
||||
pos *= scale;
|
||||
float base = sdBox(pos, vec3(.4, .4, .1)) / 1.5;
|
||||
pos.xy *= 5.;
|
||||
pos.y -= 3.5;
|
||||
pos.xy *= rot(.75);
|
||||
float result = -base;
|
||||
return result;
|
||||
}
|
||||
|
||||
float box_set(vec3 pos, float time) {
|
||||
vec3 pos_origin = pos;
|
||||
pos = pos_origin;
|
||||
pos .y += sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box1 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .y -=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box2 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .x +=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box3 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos .x -=sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box4 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.xy *= rot(.8);
|
||||
float box5 = box(pos,.5) * 6.;
|
||||
pos = pos_origin;
|
||||
float box6 = box(pos,.5) * 6.;
|
||||
float result = max(max(max(max(max(box1,box2),box3),box4),box5),box6);
|
||||
return result;
|
||||
vec3 pos_origin = pos;
|
||||
pos = pos_origin;
|
||||
pos.y += sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box1 = box(pos, 2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.y -= sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box2 = box(pos, 2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.x += sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box3 = box(pos, 2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.x -= sin(gTime * 0.4) * 2.5;
|
||||
pos.xy *= rot(.8);
|
||||
float box4 = box(pos, 2. - abs(sin(gTime * 0.4)) * 1.5);
|
||||
pos = pos_origin;
|
||||
pos.xy *= rot(.8);
|
||||
float box5 = box(pos, .5) * 6.;
|
||||
pos = pos_origin;
|
||||
float box6 = box(pos, .5) * 6.;
|
||||
float result = max(max(max(max(max(box1, box2), box3), box4), box5), box6);
|
||||
return result;
|
||||
}
|
||||
|
||||
float map(vec3 pos, float time) {
|
||||
vec3 pos_origin = pos;
|
||||
float box_set1 = box_set(pos, time);
|
||||
vec3 pos_origin = pos;
|
||||
float box_set1 = box_set(pos, time);
|
||||
|
||||
return box_set1;
|
||||
return box_set1;
|
||||
}
|
||||
|
||||
void mainImage2(out vec4 fragColor, in vec2 fragCoord) {
|
||||
vec2 p = (fragCoord.xy * 2. - resolution.xy) / min(resolution.x, resolution.y);
|
||||
vec3 ro = vec3(0., -0.2, time * 4.);
|
||||
vec3 ray = normalize(vec3(p, 1.5));
|
||||
ray.xy = ray.xy * rot(sin(time * .03) * 5.);
|
||||
ray.yz = ray.yz * rot(sin(time * .05) * .2);
|
||||
float t = 0.1;
|
||||
vec3 col = vec3(0.);
|
||||
float ac = 0.0;
|
||||
|
||||
void mainImage2( out vec4 fragColor, in vec2 fragCoord ) {
|
||||
vec2 p = (fragCoord.xy * 2. - resolution.xy) / min(resolution.x, resolution.y);
|
||||
vec3 ro = vec3(0., -0.2 ,time * 4.);
|
||||
vec3 ray = normalize(vec3(p, 1.5));
|
||||
ray.xy = ray.xy * rot(sin(time * .03) * 5.);
|
||||
ray.yz = ray.yz * rot(sin(time * .05) * .2);
|
||||
float t = 0.1;
|
||||
vec3 col = vec3(0.);
|
||||
float ac = 0.0;
|
||||
for(int i = 0; i < 99; i++) {
|
||||
vec3 pos = ro + ray * t;
|
||||
pos = mod(pos - 2., 4.) - 2.;
|
||||
gTime = time - float(i) * 0.01;
|
||||
|
||||
float d = map(pos, time);
|
||||
|
||||
for (int i = 0; i < 99; i++){
|
||||
vec3 pos = ro + ray * t;
|
||||
pos = mod(pos-2., 4.) -2.;
|
||||
gTime = time -float(i) * 0.01;
|
||||
|
||||
float d = map(pos, time);
|
||||
d = max(abs(d), 0.01);
|
||||
ac += exp(-d * 23.);
|
||||
|
||||
d = max(abs(d), 0.01);
|
||||
ac += exp(-d*23.);
|
||||
t += d * 0.55;
|
||||
}
|
||||
|
||||
t += d* 0.55;
|
||||
}
|
||||
col = vec3(ac * 0.02);
|
||||
|
||||
col = vec3(ac * 0.02);
|
||||
col += vec3(0., 0.2 * abs(sin(time)), 0.5 + sin(time) * 0.2);
|
||||
|
||||
col +=vec3(0.,0.2 * abs(sin(time)),0.5 + sin(time) * 0.2);
|
||||
|
||||
|
||||
fragColor = vec4(col ,1.0 - t * (0.02 + 0.02 * sin (time)));
|
||||
fragColor = vec4(col, 1.0 - t * (0.02 + 0.02 * sin(time)));
|
||||
}
|
||||
|
||||
float noise3( vec3 x ) {
|
||||
vec3 p = floor(x),f = fract(x);
|
||||
|
||||
f = f*f*(3.-2.*f); // or smoothstep // to make derivative continuous at borders
|
||||
|
||||
#define hash3(p) fract(sin(1e3*dot(p,vec3(1,57,-13.7)))*4375.5453) // rand
|
||||
void main(void) {
|
||||
if (getBar() <= 8)
|
||||
CoolSphere(gl_FragColor, gl_FragCoord.xy);
|
||||
else
|
||||
mainImage2(gl_FragColor, gl_FragCoord.xy);
|
||||
|
||||
return mix( mix(mix( hash3(p+vec3(0,0,0)), hash3(p+vec3(1,0,0)),f.x), // triilinear interp
|
||||
mix( hash3(p+vec3(0,1,0)), hash3(p+vec3(1,1,0)),f.x),f.y),
|
||||
mix(mix( hash3(p+vec3(0,0,1)), hash3(p+vec3(1,0,1)),f.x),
|
||||
mix( hash3(p+vec3(0,1,1)), hash3(p+vec3(1,1,1)),f.x),f.y), f.z);
|
||||
}
|
||||
|
||||
#define noise(x) (noise3(x)+noise3(x+11.5)) / 2. // pseudoperlin improvement from foxes idea
|
||||
vec3 l;
|
||||
vec2 texttop = vec2(0., -.35), pt = (gl_FragCoord.xy / resolution) - texttop;
|
||||
if(pt.y > 0.) {
|
||||
l = gl_FragColor + texture2D(texts, pt);
|
||||
}
|
||||
|
||||
void mainImage3( out vec4 O, vec2 U ) // ------------ draw isovalues
|
||||
{
|
||||
vec2 R = resolution.xy;
|
||||
float n = noise(vec3(U*8./R.y, .1*time)),
|
||||
v = sin(6.28*10.*n),
|
||||
t = time;
|
||||
|
||||
v = smoothstep(1.,0., .5*abs(v)/fwidth(v));
|
||||
|
||||
O = mix( exp(-33./R.y )* texture2D( texture_sampler, (U+vec2(1,sin(t)))/R), // .97
|
||||
.5+.5*sin(12.*n+vec4(0,2.1,-2.1,0)),
|
||||
v );
|
||||
|
||||
}
|
||||
|
||||
/* "Vortex" by @kishimisu (2024) - https://www.shadertoy.com/view/MX33Dr
|
||||
|
||||
It eventually leads somewhere...
|
||||
|
||||
[388 → 378 chars by @Xor]
|
||||
*/
|
||||
|
||||
#define R mat2(cos(vec4(0,11,33,0)
|
||||
|
||||
void mainImage(out vec4 O, vec2 F) {
|
||||
|
||||
vec2 V = resolution;
|
||||
vec3 o;
|
||||
float r = time;
|
||||
float t= .1;
|
||||
float e,x;
|
||||
|
||||
for (O *= e; e++ < 40.;
|
||||
|
||||
o.y += t*t*.09,
|
||||
o.z = mod(o.z + r, .2) - .1,
|
||||
x = t*.06 - r*.2,
|
||||
|
||||
o.x = fract(
|
||||
o.xy *= R+floor(((atan(o.y, o.x) - x) / .314) +0.5) * .314 + x))
|
||||
).x - .8,
|
||||
|
||||
t += x = length(o)*.5 - .014,
|
||||
|
||||
O += (1. + cos(t*.5 + r + vec4(0,1,2,0)))
|
||||
* (.3 + sin(3.*t + r*5.)/4.)
|
||||
/ (8. + x*4e2)
|
||||
)
|
||||
o = t * normalize(vec3((F+F-V.xy)*R+r*.15)),V.y));
|
||||
}
|
||||
|
||||
void main(void)
|
||||
{
|
||||
float abstime = abs(time);
|
||||
vec3 l;
|
||||
if (abstime < 10.0)
|
||||
CoolSphere(gl_FragColor, gl_FragCoord.xy);
|
||||
else if (abstime < 15.0)
|
||||
{
|
||||
mainImage2(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
else if (abstime < 20.0)
|
||||
{
|
||||
mainImage(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
else
|
||||
{
|
||||
mainImage3(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
|
||||
vec2 texttop = vec2(0., -.35), pt = (gl_FragCoord.xy / resolution) - texttop;
|
||||
if (pt.y > 0.)
|
||||
l = gl_FragColor + texture2D(texts, pt);
|
||||
|
||||
|
||||
gl_FragColor = vec4(l * (1.0), 1.0);
|
||||
gl_FragColor = vec4(l * (1.0), 1.0);
|
||||
|
||||
}
|
||||
|
||||
156
shader_minified.h
Normal file
156
shader_minified.h
Normal file
@ -0,0 +1,156 @@
|
||||
// Generated with Shader Minifier 1.3.6 (https://github.com/laurentlb/Shader_Minifier/)
|
||||
#ifndef SHADER_MINIFIED_H_
|
||||
# define SHADER_MINIFIED_H_
|
||||
# define VAR_resolution "s"
|
||||
# define VAR_texts "c"
|
||||
# define VAR_texture_sampler "m"
|
||||
# define VAR_time "v"
|
||||
|
||||
const char *__temp_cleaned_shader_glsl =
|
||||
"uniform float v;"
|
||||
"uniform vec2 s;"
|
||||
"uniform sampler2D m,c;"
|
||||
"float f=0.;"
|
||||
"vec2 n(vec2 v)"
|
||||
"{"
|
||||
"return vec2(v.x*v.x-v.y*v.y,2.*v.x*v.y);"
|
||||
"}"
|
||||
"mat2 t(float v)"
|
||||
"{"
|
||||
"return mat2(cos(v),sin(v),-sin(v),cos(v));"
|
||||
"}"
|
||||
"vec2 n(vec3 v,vec3 y)"
|
||||
"{"
|
||||
"vec4 s=vec4(0,0,0,2);"
|
||||
"vec3 f=v-s.xyz;"
|
||||
"float t=dot(f,y),m=t*t-dot(f,f)+s.w*s.w;"
|
||||
"if(m<0.)"
|
||||
"return vec2(-1);"
|
||||
"m=sqrt(m);"
|
||||
"return vec2(-t-m,-t+m);"
|
||||
"}"
|
||||
"float x(vec3 v)"
|
||||
"{"
|
||||
"float f=0.;"
|
||||
"vec3 y=v;"
|
||||
"for(int m=0;m<10;++m)"
|
||||
"v=.7*abs(v)/dot(v,v)-.7,v.yz=n(v.yz),v=v.zxy,f+=exp(-19.*abs(dot(v,y)));"
|
||||
"return f/2.;"
|
||||
"}"
|
||||
"vec3 n(vec3 v,vec3 y,vec2 s)"
|
||||
"{"
|
||||
"float f=s.x;"
|
||||
"vec3 m=vec3(0);"
|
||||
"float r=0.;"
|
||||
"for(int i=0;i<64;i++)"
|
||||
"{"
|
||||
"f+=.02*exp(-2.*r);"
|
||||
"if(f>s.y)"
|
||||
"break;"
|
||||
"r=x(v+f*y);"
|
||||
"m=.99*m+.08*vec3(r*r,r,r*r*r);"
|
||||
"}"
|
||||
"return m;"
|
||||
"}"
|
||||
"void t(out vec4 f,vec2 y)"
|
||||
"{"
|
||||
"float r=v;"
|
||||
"vec2 i=-1.+2.*(y.xy/s.xy);"
|
||||
"i.x*=s.x/s.y;"
|
||||
"vec2 d=vec2(0);"
|
||||
"d-=.5;"
|
||||
"vec3 a=vec3(4);"
|
||||
"a.yz*=t(d.y);"
|
||||
"a.xz*=t(d.x+.1*r);"
|
||||
"vec3 c=normalize(vec3(0)-a),g=normalize(cross(c,vec3(0,1,0))),z=normalize(i.x*g+i.y*normalize(cross(g,c))+4.*c);"
|
||||
"vec2 o=n(a,z);"
|
||||
"vec3 x=n(a,z,o);"
|
||||
"if(o.x<0.)"
|
||||
"x=texture2D(m,z).xyz;"
|
||||
"else"
|
||||
"{"
|
||||
"vec3 e=(a+o.x*z)/2.;"
|
||||
"e=reflect(z,e);"
|
||||
"float l=pow(.5+clamp(dot(e,z),0.,1.),3.)*1.3;"
|
||||
"x+=texture2D(m,e).xyz*l;"
|
||||
"}"
|
||||
"x=.5*log(1.+x);"
|
||||
"x=clamp(x,0.,1.);"
|
||||
"f=vec4(x,1);"
|
||||
"}"
|
||||
"float e(vec3 v)"
|
||||
"{"
|
||||
"vec3 f=abs(v)-vec3(.4,.4,.1);"
|
||||
"return length(max(f,0.))+min(max(f.x,max(f.y,f.z)),0.);"
|
||||
"}"
|
||||
"float e(vec3 v,float y)"
|
||||
"{"
|
||||
"v*=y;"
|
||||
"float f=e(v)/1.5;"
|
||||
"v.xy*=5.;"
|
||||
"v.y-=3.5;"
|
||||
"v.xy*=t(.75);"
|
||||
"return-f;"
|
||||
"}"
|
||||
"float x(vec3 v,float y)"
|
||||
"{"
|
||||
"vec3 m=v;"
|
||||
"v=m;"
|
||||
"v.y+=sin(f*.4)*2.5;"
|
||||
"v.xy*=t(.8);"
|
||||
"float s=e(v,2.-abs(sin(f*.4))*1.5);"
|
||||
"v=m;"
|
||||
"v.y-=sin(f*.4)*2.5;"
|
||||
"v.xy*=t(.8);"
|
||||
"float z=e(v,2.-abs(sin(f*.4))*1.5);"
|
||||
"v=m;"
|
||||
"v.x+=sin(f*.4)*2.5;"
|
||||
"v.xy*=t(.8);"
|
||||
"float r=e(v,2.-abs(sin(f*.4))*1.5);"
|
||||
"v=m;"
|
||||
"v.x-=sin(f*.4)*2.5;"
|
||||
"v.xy*=t(.8);"
|
||||
"float c=e(v,2.-abs(sin(f*.4))*1.5);"
|
||||
"v=m;"
|
||||
"v.xy*=t(.8);"
|
||||
"float x=e(v,.5)*6.;"
|
||||
"v=m;"
|
||||
"float g=e(v,.5)*6.;"
|
||||
"return max(max(max(max(max(s,z),r),c),x),g);"
|
||||
"}"
|
||||
"void p(out vec4 m,vec2 y)"
|
||||
"{"
|
||||
"vec3 r=vec3(0,-.2,v*4.),z=normalize(vec3((y.xy*2.-s.xy)/min(s.x,s.y),1.5));"
|
||||
"z.xy=z.xy*t(sin(v*.03)*5.);"
|
||||
"z.yz=z.yz*t(sin(v*.05)*.2);"
|
||||
"float a=.1;"
|
||||
"vec3 i=vec3(0);"
|
||||
"float c=0.;"
|
||||
"for(int e=0;e<99;e++)"
|
||||
"{"
|
||||
"vec3 d=r+z*a;"
|
||||
"d=mod(d-2.,4.)-2.;"
|
||||
"f=v-float(e)*.01;"
|
||||
"float g=x(d,v);"
|
||||
"g=max(abs(g),.01);"
|
||||
"c+=exp(-g*23.);"
|
||||
"a+=g*.55;"
|
||||
"}"
|
||||
"i=vec3(c*.02);"
|
||||
"i+=vec3(0,.2*abs(sin(v)),.5+sin(v)*.2);"
|
||||
"m=vec4(i,1.-a*(.02+.02*sin(v)));"
|
||||
"}"
|
||||
"void main()"
|
||||
"{"
|
||||
"if(floor(abs(v)/(60./133))<=8)"
|
||||
"t(gl_FragColor,gl_FragCoord.xy);"
|
||||
"else"
|
||||
" p(gl_FragColor,gl_FragCoord.xy);"
|
||||
"vec3 f;"
|
||||
"vec2 m=gl_FragCoord.xy/s-vec2(0,-.35);"
|
||||
"if(m.y>0.)"
|
||||
"f=gl_FragColor+texture2D(c,m);"
|
||||
"gl_FragColor=vec4(f,1);"
|
||||
"}";
|
||||
|
||||
#endif // SHADER_MINIFIED_H_
|
||||
@ -45,27 +45,17 @@ TIMINGS_REC_STRING_PTR_FIELD_OFS equ (REC_TIMINGS_TIME_FIELD_SIZE + REC_TIMINGS_
|
||||
|
||||
section .textstr1 data
|
||||
;______STRINGS_START______
|
||||
_string0: DEFINE_STRING 'Hello World' END_STRING
|
||||
_string1: DEFINE_STRING 'This is Scene1' END_STRING
|
||||
_string2: DEFINE_STRING 70, 105, 114, 115, 116, 32, 100, 101, 109, 111, 13, 119, 101, 32, 101, 118, 101, 114, 32, 109, 97, 100, 101 END_STRING
|
||||
_string3: DEFINE_STRING 'This is Scene2' END_STRING
|
||||
_string4: DEFINE_STRING 83, 97, 121, 32, 104, 105, 32, 116, 111, 13, 77, 111, 109, 32, 102, 111, 114, 32, 109, 101 END_STRING
|
||||
_string5: DEFINE_STRING 'Shout out to' END_STRING
|
||||
_string6: DEFINE_STRING 'Puavohard' END_STRING
|
||||
_string7: DEFINE_STRING 'Goodbye!' END_STRING
|
||||
_string0: DEFINE_STRING 32 END_STRING
|
||||
_string1: DEFINE_STRING 65, 115, 115, 101, 109, 98, 108, 121, 13, 50, 48, 50, 52 END_STRING
|
||||
_string2: DEFINE_STRING 71, 111, 111, 100, 98, 121, 101, 33 END_STRING
|
||||
;______STRINGS_END______
|
||||
|
||||
section .textstr2 data
|
||||
text_string_timings:
|
||||
;______TIMINGS_START______
|
||||
DEFINE_TIMING TIMING_TIME(0,0.00000,0) TIMING_ALIAS('START_TIME') TIMING_CUSTOM(0) TIMING_STRING(0,_string0) ; this is a comment
|
||||
DEFINE_TIMING TIMING_TIME(1,0.00000,88200) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string1) ; this is a comment
|
||||
DEFINE_TIMING TIMING_TIME(2,0.50000,220500) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string2) ; another comment
|
||||
DEFINE_TIMING TIMING_TIME(10,0.00000,882000) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string3) ; this is a komment
|
||||
DEFINE_TIMING TIMING_TIME(12,0.00000,1058400) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string4) ;
|
||||
DEFINE_TIMING TIMING_TIME(15,0.00000,1323000) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string5) ; abcd
|
||||
DEFINE_TIMING TIMING_TIME(18,0.00000,1587600) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string6) ; efgh
|
||||
DEFINE_TIMING TIMING_TIME(20,0.00000,1764000) TIMING_ALIAS('END_TIME') TIMING_CUSTOM(0) TIMING_STRING(0,_string7) ; efgh
|
||||
DEFINE_TIMING TIMING_TIME(0,0.00000,0) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string0) ;
|
||||
DEFINE_TIMING TIMING_TIME(4,0.00000,318315) TIMING_ALIAS('') TIMING_CUSTOM(0) TIMING_STRING(0,_string1) ;
|
||||
DEFINE_TIMING TIMING_TIME(20,0.00000,1591578) TIMING_ALIAS('END_TIME') TIMING_CUSTOM(0) TIMING_STRING(0,_string2) ;
|
||||
;______TIMINGS_END______
|
||||
dd 0xFFFFFFFF ; end-of-time
|
||||
|
||||
|
||||
Reference in New Issue
Block a user