-
Notifications
You must be signed in to change notification settings - Fork 19
/
q3_rest.txt
138 lines (129 loc) · 5.9 KB
/
q3_rest.txt
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
- CPM map "paradise" have too much trigger_push entities (uses cmodels), total model count > 256,
map cannot be loaded:
- can try to increase model count by using reserved confinstrings indexes, can be useful for
some HL maps too (use with extprotocol)
- q3a maps not affected by CL_SetLightstyle(0, ...) - dynamicLightmap_t required?
- add "model2" field for most brush model entities to attach md3 model (q3dm19)
FOUND BUG from p99 (when moved EntityParser call from model.cpp to cmodel.cpp - after map loading):
"wads" needed for HL surface loading, but entities parsed after map loading;
? bug may be easily fixed after reworking entity sustem (and remove "wads" field from bspfile_t)
? try to convert HL's "trigger_push"
- also func_ladder, func_water etc (contents changers) does not works
COMBINER BUGS:
- q3dm2:
- with MUL2 multitexturing: "wetwall" is too dark (should use ARB MUL2 mode)
- no multitexturing at all:
- "wetwall": uses blend mode != src*dst, which cannot be converted to src*dst*2 -- too dark
- no PostLight dlights at all
- std multitexturing (no MUL2):
- windowed (no gamma overbright): "q1metal7_99spot": PostLight is too bright (when
r_q3map_overbright=1; all ok when =0) -- this is an overflow of color buffer, combiners are
ok (lightmap is too bright?)
- fullscreen (have gamma overbright): everything ok
---------------------------------------------------------------------------------------------------
zoneportals (q2,q3):
! can clip visible contents with portal:
a) no portals open - draw nothing (q2 does)
b) 1 portal open - compute special frustum for it (should improve performance)
c) 2+ portals open - draw everything (q2/q3 does) or expand computed frustum by all portals
! Q2 portal game code is completely different from Q3 one, so, Q3 map portals will be "invisible"
for Q2 game dll -- require server-side hook (or create func_areaportal entity?)
* info: Q3A zonebits computed in SV_AddEntitiesVisibleFromPoint()
! this will require geometric information about zone portal (model, surface, bbox etc)
* Q2: a) door.target.class == "func_areaportal" -> open zoneportal #target.style
(check door_use_areaportals() in game code)
b) standalone func_areaportal (used with doors only?) - check Use_Areaportal()
* Q3: when moving entity touched 2 zones, then when entity is in original state, portal will be
closed, otherwise portal will be opened
---------------------------------------------------------------------------------------------------
shader lighting:
- make dlight updates for vertex lightmap DYNAMIC: do not call UpdateDynamicLightmap
every time -- dlights should be applied in backend inside ComputeCombiners()
- q3 lightgrid support: have some maps with erased pointlight entities
- implement as separate light source (global)
- may use available lights (surface, sun) to emphasize light effect (may be optional)
---------------------------------------------------------------------------------------------------
vertex lighting:
- overbright vertex light for r_q3map_overbright
? vertex light (at least for trisurfs): use isDoubleRgba
---------------------------------------------------------------------------------------------------
- fence textures (with alpha-channel):
- try to use my code for Kingpin maps/textures to prevent artifacts when far from texture
- Q3 have lightmaps on fences; displayed in my Q2, but as separate pass - try to combine
- try to use same tech for lighting KP fences
---------------------------------------------------------------------------------------------------
- worlspawn "music": can hook cdaudio and replace CD playback with specified music track:
- check Q3A code: which function used to playback such audio files
- is music completely loaded into RAM?
- g_spawn.c::SP_worldspawn(): CD_CDTRACK set up as `va("%i", ent->sounds)', so we cannot
send track name as configstring, it should be replaced in client-side hook
? q3map_backsplash <frac> <dist> -- generate point lights near surface light
? particles does not works in some places (should collide with patches?)
- trisurfs: dlights does not works for surfaces with "diffuse light", owned by world entity
(code uses uses ent->center ...)
q3 path: trisurfs uses vertex lighting, but my code requires dynamicLightmap for this
- display curves
- trace curves
- fog
? vertex lighting (no lightmap loading, using vertex light from bsp) -- q3a vertex light is ugly ...
- color saturation (lightmaps, vertex light)
- surface lighting from "autosprite" -> point light
------------------"Strange blend for LM"-----------------------
*** q3dm7 {1356,-555,-18} *** (gl_spyShader: shader not combined!)
textures/gothic_wall/iron01_m
textures/gothic_wall/iron01_ndark
{
{
map $lightmap
rgbgen identity
}
{
map ...
blendFunc GL_DST_COLOR GL_SRC_ALPHA <---- bad ...
rgbGen identity
alphaGen lightingSpecular
}
}
<---- here: exchange 1st and 2nd stages, LM will go 1st ---->
textures/sfx/bouncepad01block18b
textures/sfx/computerpurptileb
textures/gothic_button/timbutton -- r_lightmap does not works + no dlights ...
{
{
map ...
rgbGen identity
}
{
map $lightmap
rgbGen identity
blendfunc gl_dst_color gl_zero
}
....
}
*** q3dm1 *** (no "bad lm blend" message, simply bad lm)
textures/gothic_floor/center2trn
{
{
map textures/sfx/fireswirl2.tga
tcmod rotate 333
tcMod stretch sin .8 0.2 0 9.7
rgbGen identity
}
{
map textures/gothic_floor/center2trn.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
tcmod rotate 30
tcMod stretch sin .8 0.2 0 .2
rgbGen identity
}
{
map textures/gothic_floor/center2trn.tga
blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
rgbGen identity
}
{
map $lightmap
blendFunc GL_DST_COLOR GL_ONE_MINUS_DST_ALPHA
rgbGen identity
}
}