forked from KolibriOS/kolibrios
fix normal vector in light at infinity
git-svn-id: svn://kolibrios.org@6093 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8c16659ac8
commit
70dac9a285
@ -355,12 +355,6 @@ endp
|
|||||||
align 4
|
align 4
|
||||||
fl_1e_3 dd 1.0e-3
|
fl_1e_3 dd 1.0e-3
|
||||||
|
|
||||||
if DEBUG
|
|
||||||
txt_mate db 'Material',0
|
|
||||||
txt_colo db 'Color',0
|
|
||||||
txt_rgba db 'R, G, B',0
|
|
||||||
end if
|
|
||||||
|
|
||||||
; non optimized lightening model
|
; non optimized lightening model
|
||||||
align 4
|
align 4
|
||||||
proc gl_shade_vertex, context:dword, v:dword
|
proc gl_shade_vertex, context:dword, v:dword
|
||||||
@ -386,6 +380,16 @@ pushad
|
|||||||
; ebx -> GLLight *l
|
; ebx -> GLLight *l
|
||||||
; ecx -> GLMaterial *m
|
; ecx -> GLMaterial *m
|
||||||
; esi -> GLVertex *v
|
; esi -> GLVertex *v
|
||||||
|
|
||||||
|
;n = v.normal
|
||||||
|
;d = l.position
|
||||||
|
; diffuse light
|
||||||
|
;dot = d*n
|
||||||
|
;dot_spot = d*l.norm_spot_direction
|
||||||
|
; specular light
|
||||||
|
;s = d-v.ec
|
||||||
|
;dot_spec = n*s
|
||||||
|
|
||||||
mov esi,[v]
|
mov esi,[v]
|
||||||
mov edx,[context]
|
mov edx,[context]
|
||||||
mov ecx,edx
|
mov ecx,edx
|
||||||
@ -401,20 +405,6 @@ pushad
|
|||||||
movsd ;n.Z=v.normal.Z
|
movsd ;n.Z=v.normal.Z
|
||||||
mov esi,[v]
|
mov esi,[v]
|
||||||
|
|
||||||
if DEBUG ;offs_mate_emission, offs_mate_ambient, offs_mate_specular, offs_mate_diffuse
|
|
||||||
push ecx
|
|
||||||
stdcall dbg_print,txt_mate,txt_nl
|
|
||||||
add ecx,offs_mate_emission
|
|
||||||
stdcall gl_print_matrix,ecx,1
|
|
||||||
add ecx,offs_mate_ambient-offs_mate_emission
|
|
||||||
stdcall gl_print_matrix,ecx,1
|
|
||||||
add ecx,offs_mate_specular-offs_mate_ambient
|
|
||||||
stdcall gl_print_matrix,ecx,1
|
|
||||||
add ecx,offs_mate_diffuse-offs_mate_specular
|
|
||||||
stdcall gl_print_matrix,ecx,1
|
|
||||||
pop ecx
|
|
||||||
end if
|
|
||||||
|
|
||||||
fld dword[edx+offs_cont_ambient_light_model]
|
fld dword[edx+offs_cont_ambient_light_model]
|
||||||
fmul dword[ecx+offs_mate_ambient]
|
fmul dword[ecx+offs_mate_ambient]
|
||||||
fadd dword[ecx] ;offs_mate_emission=0
|
fadd dword[ecx] ;offs_mate_emission=0
|
||||||
@ -454,12 +444,12 @@ end if
|
|||||||
; light at infinity
|
; light at infinity
|
||||||
ffree st0 ;l.position.v[3]
|
ffree st0 ;l.position.v[3]
|
||||||
fincstp
|
fincstp
|
||||||
mov eax,[ebx+offs_ligh_position]
|
mov eax,[ebx+offs_ligh_norm_position]
|
||||||
mov [d],eax ;d.X=l.position.v[0]
|
mov [d],eax ;d.X=l.norm_position.v[0]
|
||||||
mov eax,[ebx+offs_ligh_position+offs_Y]
|
mov eax,[ebx+offs_ligh_norm_position+offs_Y]
|
||||||
mov [d+offs_Y],eax ;d.Y=l.position.v[1]
|
mov [d+offs_Y],eax ;d.Y=l.norm_position.v[1]
|
||||||
mov eax,[ebx+offs_ligh_position+offs_Z]
|
mov eax,[ebx+offs_ligh_norm_position+offs_Z]
|
||||||
mov [d+offs_Z],eax ;d.Z=l.position.v[2]
|
mov [d+offs_Z],eax ;d.Z=l.norm_position.v[2]
|
||||||
mov dword[att],1.0
|
mov dword[att],1.0
|
||||||
jmp .els_0_end
|
jmp .els_0_end
|
||||||
.els_0:
|
.els_0:
|
||||||
@ -562,10 +552,10 @@ end if
|
|||||||
je .if1_end
|
je .if1_end
|
||||||
fld dword[ebx+offs_ligh_norm_spot_direction]
|
fld dword[ebx+offs_ligh_norm_spot_direction]
|
||||||
fmul dword[d]
|
fmul dword[d]
|
||||||
fld dword[ebx+offs_ligh_norm_spot_direction+4]
|
fld dword[ebx+offs_ligh_norm_spot_direction+offs_Y]
|
||||||
fmul dword[d+offs_Y]
|
fmul dword[d+offs_Y]
|
||||||
faddp
|
faddp
|
||||||
fld dword[ebx+offs_ligh_norm_spot_direction+8]
|
fld dword[ebx+offs_ligh_norm_spot_direction+offs_Z]
|
||||||
fmul dword[d+offs_Z]
|
fmul dword[d+offs_Z]
|
||||||
faddp
|
faddp
|
||||||
fchs
|
fchs
|
||||||
@ -756,13 +746,6 @@ end if
|
|||||||
mov [esi+offs_vert_color+8],eax ;v.color.v[2]=clampf(B,0,1)
|
mov [esi+offs_vert_color+8],eax ;v.color.v[2]=clampf(B,0,1)
|
||||||
mov eax,[A]
|
mov eax,[A]
|
||||||
mov [esi+offs_vert_color+12],eax ;v.color.v[3]=A
|
mov [esi+offs_vert_color+12],eax ;v.color.v[3]=A
|
||||||
if DEBUG ;offs_vert_color
|
|
||||||
push esi
|
|
||||||
stdcall dbg_print,txt_colo,txt_nl
|
|
||||||
add esi,offs_vert_color
|
|
||||||
stdcall gl_print_matrix,esi,1
|
|
||||||
pop esi
|
|
||||||
end if
|
|
||||||
popad
|
popad
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
Loading…
Reference in New Issue
Block a user