mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-14 08:24:04 +09:00
crt shader now has crosstalk sim
This commit is contained in:
@@ -269,7 +269,9 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
|
|||||||
override fun dispose() {
|
override fun dispose() {
|
||||||
System.err.println("Dispose AudioAdapter")
|
System.err.println("Dispose AudioAdapter")
|
||||||
renderRunnables.forEach { it.stop() }
|
renderRunnables.forEach { it.stop() }
|
||||||
|
renderThreads.forEach { it.interrupt() }
|
||||||
writeQueueingRunnables.forEach { it.stop() }
|
writeQueueingRunnables.forEach { it.stop() }
|
||||||
|
writeQueueingThreads.forEach { it.interrupt() }
|
||||||
playheads.forEach { it.dispose() }
|
playheads.forEach { it.dispose() }
|
||||||
sampleBin.destroy()
|
sampleBin.destroy()
|
||||||
pcmBin.destroy()
|
pcmBin.destroy()
|
||||||
@@ -432,8 +434,8 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
|
|||||||
|
|
||||||
fun dispose() {
|
fun dispose() {
|
||||||
// audioDevice.dispose() is called by RenderRunnable.stop()
|
// audioDevice.dispose() is called by RenderRunnable.stop()
|
||||||
// System.err.println("AudioDevice dispose ${parent.renderThreads[index]}")
|
System.err.println("AudioDevice dispose ${parent.renderThreads[index]}")
|
||||||
// try { audioDevice.dispose() } catch (e: GdxRuntimeException) { println(" "+ e.message) }
|
try { audioDevice.dispose() } catch (e: GdxRuntimeException) { println(" "+ e.message) }
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -403,6 +403,16 @@ const mat4 yuv_to_rgb = mat4(
|
|||||||
0.0, 0.0, 0.0, 1.0
|
0.0, 0.0, 0.0, 1.0
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const float ALFA = 0.2;
|
||||||
|
const float BETA = 0.2;
|
||||||
|
|
||||||
|
const mat4 crosstalk_mat = mat4(
|
||||||
|
1.0, 0.0, 0.0, 0.0,
|
||||||
|
ALFA, 1.0, 0.0, 0.0,
|
||||||
|
BETA, 0.0, 1.0, 0.0,
|
||||||
|
0.0, 0.0, 0.0, 1.0
|
||||||
|
);
|
||||||
|
|
||||||
const float gamma = 2.4;
|
const float gamma = 2.4;
|
||||||
const float blurH = 0.8;
|
const float blurH = 0.8;
|
||||||
const float blurV = 0.4;
|
const float blurV = 0.4;
|
||||||
@@ -421,10 +431,12 @@ vec4 avr(vec4 a, vec4 b, float gam) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec4 grading(vec4 col, vec4 args) {
|
vec4 grading(vec4 col0, vec4 args) {
|
||||||
vec4 vel = vec4(1.0, 1.0 / args.y, 1.0 / args.z, 1.0);
|
vec4 vel = vec4(1.0, 1.0 / args.y, 1.0 / args.z, 1.0);
|
||||||
vec4 power = vec4(args.x, args.x, args.x, 1.0);
|
vec4 power = vec4(args.x, args.x, args.x, 1.0);
|
||||||
|
|
||||||
|
vec4 col = crosstalk_mat * col0;
|
||||||
|
|
||||||
vec4 sgn = sign(col);
|
vec4 sgn = sign(col);
|
||||||
vec4 absval = abs(col);
|
vec4 absval = abs(col);
|
||||||
vec4 raised = pow(absval, vel);
|
vec4 raised = pow(absval, vel);
|
||||||
@@ -452,9 +464,9 @@ void main() {
|
|||||||
vec4 LRavr = avr(colourL, colourR, gamma);
|
vec4 LRavr = avr(colourL, colourR, gamma);
|
||||||
vec4 wgtavr = avr(LRavr, colourIn, gamma);
|
vec4 wgtavr = avr(LRavr, colourIn, gamma);
|
||||||
|
|
||||||
vec4 outCol = wgtavr * ((mod(gl_FragCoord.y, 2.0) >= 1.0) ? scanline : one);
|
vec4 outCol = wgtavr;
|
||||||
|
|
||||||
fragColor = grading(outCol, gradingarg);
|
fragColor = grading(outCol, gradingarg) * ((mod(gl_FragCoord.y, 2.0) >= 1.0) ? scanline : one);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user