Полагаю, это возможно с функциями наложения.
Порог: все пиксели с цветами под пороговым значением обнуляются;другие идут к одному.
Вот основной код.
import pyglet
from pyglet.gl import *
# Set the threshold value
threshold = 0.5
# Window creation
window = pyglet.window.Window(500, 500)
@window.event
def on_draw():
# Draw a square black to white gradient
pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES, [0, 1, 2, 2, 3, 0],
('v2i', (100, 100, 100, 400, 400, 400, 400, 100)),
('c4f', (0, 0, 0, 1) * 2 + (1, 1, 1, 1) * 2))
# Overlay a small square on top
glEnable(GL_BLEND)
glBlendEquation(GL_MAX)
glBlendFunc(GL_ONE, GL_DST_COLOR)
pyglet.graphics.draw_indexed(4, pyglet.gl.GL_TRIANGLES, [0, 1, 2, 2, 3, 0],
('v2i', (200, 200, 200, 300, 300, 300, 300, 200)),
('c4f', (threshold, threshold, threshold, 1) * 4))
pyglet.app.run()
Желаемый результат: Порог