Skip to content

Commit c578026

Browse files
committed
Use the shader registry
1 parent 99c57ad commit c578026

5 files changed

Lines changed: 72 additions & 5 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Hardware Skinning DNA ANIMPROP Fragment Shader
2+
// Drewcification 122120
3+
4+
#version 430
5+
6+
uniform vec4 p3d_ColorScale;
7+
8+
in vec4 vColor;
9+
in vec2 texcoord;
10+
11+
out vec4 color;
12+
13+
uniform sampler2D p3d_Texture0;
14+
15+
void main() {
16+
// Mix the Texture, ColorScale, and VertexColor to get the full color
17+
color = p3d_ColorScale * texture(p3d_Texture0, texcoord) * vColor;
18+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Hardware Skinning DNA ANIMPROP Vertex Shader
2+
// Drewcification 122120
3+
4+
#version 430
5+
in vec4 p3d_Vertex;
6+
in vec4 p3d_Color;
7+
in vec2 p3d_MultiTexCoord0;
8+
9+
in vec4 transform_weight;
10+
in uvec4 transform_index;
11+
12+
uniform mat4 p3d_ModelViewProjectionMatrix;
13+
14+
uniform mat4 p3d_TransformTable[100];
15+
16+
out vec4 vColor;
17+
out vec2 texcoord;
18+
19+
void main() {
20+
// calculates the positions of the vertices for the animation
21+
22+
mat4 animMatrix = p3d_TransformTable[transform_index.x] * transform_weight.x
23+
+ p3d_TransformTable[transform_index.y] * transform_weight.y
24+
+ p3d_TransformTable[transform_index.z] * transform_weight.z
25+
+ p3d_TransformTable[transform_index.w] * transform_weight.w;
26+
27+
gl_Position = p3d_ModelViewProjectionMatrix * animMatrix * p3d_Vertex;
28+
29+
vColor = p3d_Color;
30+
texcoord = p3d_MultiTexCoord0;
31+
}

toontown/hood/GenericAnimatedProp.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
from direct.actor import Actor
33
from direct.interval.IntervalGlobal import *
44
from direct.directnotify import DirectNotifyGlobal
5+
6+
from ott.ShaderRegistry import ShaderRegistry
7+
58
from toontown.toonbase import ToontownGlobals
69
from toontown.hood import ZoneUtil
710
from toontown.hood import HoodUtil
@@ -85,7 +88,10 @@ def setupActor(self, node):
8588
self.trashcan.loadAnims({'anim': f"{self.path}/{anim}"})
8689
self.trashcan.pose('anim', 0)
8790
self.trashcan.setBlend(frameBlend = 1)
88-
self.trashcan.setShaderAuto()
91+
shader = ShaderRegistry.get('dna:anim_prop')
92+
attr = ShaderAttrib.make(shader)
93+
attr = attr.setFlag(ShaderAttrib.F_hardware_skinning, True)
94+
self.trashcan.setAttrib(attr)
8995
self.node = self.trashcan
9096

9197
def calcHoodId(self, node):

toontown/leveleditor/LevelEditorPanel.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from .LevelEditorGlobals import *
1414
from .LESceneGraphExplorer import *
1515

16+
from ott.ShaderRegistry import ShaderRegistry
17+
1618
from toontown.fixes import VectorWidgets
1719

1820

@@ -1578,10 +1580,7 @@ def runInject(self, e):
15781580

15791581
def toggleOT(self):
15801582
if self.toggleOTVar.get():
1581-
self.levelEditor.getNPToplevel().setShader(
1582-
Shader.load(Shader.SL_GLSL,
1583-
vertex = 'resources/shaders/tt_sha_render_bandw.vert',
1584-
fragment = 'resources/shaders/tt_sha_render_bandw.frag'))
1583+
self.levelEditor.getNPToplevel().setShader(ShaderRegistry.get('render:black_and_white'))
15851584
else:
15861585
self.levelEditor.getNPToplevel().clearShader()
15871586

ttle.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
from tkinter import Tk, messagebox
1414

1515
from ott.Settings import Settings
16+
from ott.ShaderRegistry import ShaderRegistry
17+
1618
from toontown.toonbase import ToontownGlobals
1719

1820
TOONTOWN_ONLINE = 0
@@ -128,6 +130,8 @@ def __init__(self):
128130
loop.run_until_complete(self.__checkUpdates())
129131

130132
self.__addCullBins()
133+
134+
self.__registerShaders()
131135

132136
# Now we actually start the editor
133137
ShowBase.__init__(self)
@@ -218,6 +222,15 @@ def __addCullBins():
218222
cbm = CullBinManager.getGlobalPtr()
219223
cbm.addBin('ground', CullBinManager.BTUnsorted, 18)
220224
cbm.addBin('shadow', CullBinManager.BTBackToFront, 19)
225+
226+
@staticmethod
227+
def __registerShaders():
228+
ShaderRegistry.register('render:black_and_white',
229+
frag = 'resources/shaders/tt_sha_render_bandw.frag',
230+
vert = 'resources/shaders/tt_sha_render_bandw.vert')
231+
ShaderRegistry.register('dna:anim_prop',
232+
frag = 'resources/shaders/tt_sha_dna_anim_prop.frag',
233+
vert = 'resources/shaders/tt_sha_dna_anim_prop.vert')
221234

222235
async def __checkUpdates(self):
223236
import aiohttp, webbrowser

0 commit comments

Comments
 (0)