-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpbp.py
More file actions
56 lines (50 loc) · 1.59 KB
/
pbp.py
File metadata and controls
56 lines (50 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import math
from panda3d.core import *
from direct.showbase.ShowBase import ShowBase
load_prc_file_data("",
"""
framebuffer-multisample true
multisamples 2
"""
)
def color_from_temperature(temp):
"""Convert a kelvin temperature to RGB. Algorithm from
http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/"""
temp /= 100
if temp <= 66:
red = 255
else:
red = temp - 60
red = 329.698727446 * (red ** -0.133047592)
red = max(0, red)
red = min(255, red)
if temp <= 66:
green = temp
green = 99.4708025861 * math.log(green) - 161.1195681661
green = max(0, green)
green = min(255, green)
else:
green = temp - 60
green = 288.1221695283 * (green ** -0.0755148492)
green = max(0, green)
green = min(255, green)
if temp >= 66:
blue = 255
else:
if temp <= 19:
blue = 0
else:
blue = temp - 10
blue = 138.5177312231 * math.log(blue) - 305.0447927307
blue = max(0, blue)
blue = min(255, blue)
return (red / 255, green / 255, blue / 255)
class ShadingFramework:
def __init__(self, root):
self.root = root
self.root.set_antialias(AntialiasAttrib.MAuto)
base.task_mgr.add(self.update, "update")
self.shader = Shader.load(Shader.SL_GLSL, vertex = "shaders/main.vert", fragment = "shaders/main.frag")
self.root.set_shader(self.shader)
def update(self, task):
return task.cont