Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
88 lines
2.3 KiB
GLSL
88 lines
2.3 KiB
GLSL
vs.1.0
|
|
;------------------------------------------------------------------------------
|
|
; Constants specified by the app
|
|
; c0 = (0,0,0,0)
|
|
; c1 = (1,1,1,1)
|
|
; c2 = (0,1,2,3)
|
|
; c3 = (4,5,6,7)
|
|
; c4-c7 = matWorld0
|
|
; c8-c11 = matWorld1
|
|
; c12-c15 = matViewProj
|
|
; c20 = light direction
|
|
; c21 = material diffuse color * light diffuse color
|
|
; c22 = material ambient color
|
|
;
|
|
; Vertex components (as specified in the vertex DECL)
|
|
; v0 = Position
|
|
; v1.x = Blend weight
|
|
; v3 = Normal
|
|
; v7 = Texcoords
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Vertex blending
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Transform position for world0 matrix
|
|
dp4 r0.x, v0, c4
|
|
dp4 r0.y, v0, c5
|
|
dp4 r0.z, v0, c6
|
|
dp4 r0.w, v0, c7
|
|
|
|
; Transform position for world1 matrix
|
|
dp4 r1.x, v0, c8
|
|
dp4 r1.y, v0, c9
|
|
dp4 r1.z, v0, c10
|
|
dp4 r1.w, v0, c11
|
|
|
|
; Lerp the two positions r0 and r1 into r2
|
|
mul r0, r0, v1.x ; v0 * weight
|
|
add r2, c1.x, -v1.x ; r2 = 1 - weight
|
|
mad r2, r1, r2, r0 ; pos = (1-weight)*v1 + v0*weight
|
|
|
|
; Transform to projection space
|
|
dp4 oPos.x, r2, c12
|
|
dp4 oPos.y, r2, c13
|
|
dp4 oPos.z, r2, c14
|
|
dp4 oPos.w, r2, c15
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Lighting calculation
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Transform normal for world0 matrix
|
|
dp4 r0.x, v3, c4
|
|
dp4 r0.y, v3, c5
|
|
dp4 r0.z, v3, c6
|
|
dp4 r0.w, v3, c7
|
|
|
|
; Transform normal for world1 matrix
|
|
dp4 r1.x, v3, c8
|
|
dp4 r1.y, v3, c9
|
|
dp4 r1.z, v3, c10
|
|
dp4 r1.w, v3, c11
|
|
|
|
; Lerp the two normals r0 and r1 into r2
|
|
mul r0, r0, v1.x ; v0 * weight
|
|
add r2, c1.x, -v1.x ; r2 = 1 - weight
|
|
mad r2, r1, r2, r0 ; normal = (1-weight)*v1 + v0*weight
|
|
|
|
; Do the lighting calculation
|
|
dp3 r1.x, r2, c20 ; r1 = normal dot light
|
|
max r1, r1.x, c0 ; if dot < 0 then dot = 0
|
|
mul r0, r1.x, c21 ; Multiply with diffuse
|
|
add r0, r0, c22 ; Add in ambient
|
|
min oD0, r0, c1.x ; clamp if > 1
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Texture coordinates
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Just copy the texture coordinates
|
|
mov oT0, v7
|
|
|
|
|