Hi conitec,
Ich weiß, dass Bugs im Zusammenhang mit hit.u1/v1 hier schon Thema waren. Soweit ich dies testen konnte, sind die angesprochenen Probleme auch korrigiert worden. Leider gibt es bei mir immer noch Probleme mit unkorrekten hit.u1/v1 Werten und zwar im Zusammenhang mit dem Scalieren von Entities.
Im Zusammenhang mit einem eigenen Shadowmapping code für statische Terrainschatten trace ich von einer Lichtposition Positionen auf einer Terrainoberfläche an und prüfe auf Hindernisse. Wenn ein Hindernis getroffen wird, prüfe ich dessen texturalphakanal an der hit.u1/v1 position und moduliere anhand des alphawertes den schatten.
photon = c_trace(temp_vec,vector(temp[0],temp[1],temp[2]+1),IGNORE_PASSABLE | IGNORE_YOU | USE_POLYGON | SCAN_TEXTURE);
if(photon) {
if (!you) continue;
if (!hit.skin1) continue;
format = bmap_lock(hit.skin1,0);
tempi = 100;
pixel_to_vec(oldi[0],tempi,format,pixel_for_bmap(hit.skin1,hit.u1,hit.v1));
bmap_unlock(hit.skin1);
if(you.alpha == 100 && tempi == 100) continue;
tex_alpha = tex_alpha + maxv(tempi-(100-you.alpha),0);
}
In diesem Beispiel erhalte ich in tex_alpha den alphawert der getroffenen Entitytextur unter Berücksichtigung des Grundalphawertes dieses Hindernisses. Mit diesem Wert kann ich einen "alpha"-Schatten auf dem terrain erzeugen, also eine shadowmap, die alphakanäle der Hindernisse berücksichtigt.
So lange alle Hindernisse nicht scaliert werden funktioniert dies auch einwandfrei.
Scaliere ich jedoch ein Hindernisentity mit entity.scale_x(_y _z), dann erhalte ich als Schatten ein Abbild als ob die hit.u1/v1 koordinaten nicht scaliert wären. Das sieht dann so aus, als ob der Schatten (scale wert) mal nebeneinander gelegt wäre, d.H. als ob hit.u1/v1 pro 1/entity.scale_x wiederholt würden. Sorry ich kanns nicht besser erklären und kann keine Bilder hochladen.
Beispiel: Ich scaliere ein Grasobjekt mit dem Faktor 4. Sein Schatten sieht dann so aus, als ob das scalierte Grasobjekt ein 4*4 Raster des ursprünglichen Grasobjektes wäre.
Viele Grüße
Redphoenix