Вот его код:
- Код: Выделить всё
Type VECTOR
X As Single
Y As Single
Z As Single
End Type
Sub LightRenderList()
Dim i As Long, j As Long, L As Long
Dim koef As Single, d As Single
Dim VDelta As VECTOR
For i = 1 To PolyCount
If RenderList(i).bCulled = False Then
For j = 1 To 3
For L = 1 To LightCount
VDelta = VSub(RenderList(i).Base(j).Location, LightList(L).Location)
d = VLen(VDelta)
koef = LightList(L).powerful / d 'мощность света / d
RenderList(i).Final(j).intensity.R = RenderList(i).Final(j).intensity.R + LightList(L).intensity.R * koef
RenderList(i).Final(j).intensity.G = RenderList(i).Final(j).intensity.G + LightList(L).intensity.G * koef
RenderList(i).Final(j).intensity.B = RenderList(i).Final(j).intensity.B + LightList(L).intensity.B * koef
Next L
If RenderList(i).Final(j).intensity.R > 256 Then RenderList(i).Final(j).intensity.R = 256
If RenderList(i).Final(j).intensity.G > 256 Then RenderList(i).Final(j).intensity.G = 256
If RenderList(i).Final(j).intensity.B > 256 Then RenderList(i).Final(j).intensity.B = 256
Next j
End If
Next i
End Sub
Function VLen(V As VECTOR) As Single
VLen = Sqr(V.X * V.X + V.Y * V.Y + V.z * V.z)
End Function
Вопрос в том, как можно реализовать
динамическое всенаправленное освещение, видящее препядствие и отбрасывающее в результате этого тень. Только одно ограничение, т.к. движок софтверный, мне хочется, чтобы он им и остался, поэтому буду рад увидеть чистый код, математика и т.д. без библиотек и компонентов... Спасибо!