crt shader now has crosstalk sim

This commit is contained in:
minjaesong
2024-08-13 22:58:06 +09:00
parent dc0be53234
commit 6325684610
2 changed files with 19 additions and 5 deletions

View File

@@ -269,7 +269,9 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
override fun dispose() {
System.err.println("Dispose AudioAdapter")
renderRunnables.forEach { it.stop() }
renderThreads.forEach { it.interrupt() }
writeQueueingRunnables.forEach { it.stop() }
writeQueueingThreads.forEach { it.interrupt() }
playheads.forEach { it.dispose() }
sampleBin.destroy()
pcmBin.destroy()
@@ -432,8 +434,8 @@ class AudioAdapter(val vm: VM) : PeriBase(VM.PERITYPE_SOUND) {
fun dispose() {
// audioDevice.dispose() is called by RenderRunnable.stop()
// System.err.println("AudioDevice dispose ${parent.renderThreads[index]}")
// try { audioDevice.dispose() } catch (e: GdxRuntimeException) { println(" "+ e.message) }
System.err.println("AudioDevice dispose ${parent.renderThreads[index]}")
try { audioDevice.dispose() } catch (e: GdxRuntimeException) { println(" "+ e.message) }
}
companion object {

View File

@@ -403,6 +403,16 @@ const mat4 yuv_to_rgb = mat4(
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 blurH = 0.8;
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 power = vec4(args.x, args.x, args.x, 1.0);
vec4 col = crosstalk_mat * col0;
vec4 sgn = sign(col);
vec4 absval = abs(col);
vec4 raised = pow(absval, vel);
@@ -452,9 +464,9 @@ void main() {
vec4 LRavr = avr(colourL, colourR, 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);
}