Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 15. únor 2023, 14:12:08 Předmět: |
|
|
Výkonově je asi výhodnější použít víc vertexů, ale samozřejmě jako programátor si chceš pohrát s parallax mappingem. _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
Ladis
Založen: 18. 09. 2007 Příspěvky: 1536 Bydliště: u Prahy
|
Zaslal: 15. únor 2023, 14:17:32 Předmět: |
|
|
V Rage Carmack používal parallax mapping jen pro zamáčkliny, nikdy na vymáčkliny, že? Aby to nevypadalo blbě při pohledu z boku. _________________ Award-winning game developer |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1526 Bydliště: Telč
|
Zaslal: 16. únor 2023, 09:43:54 Předmět: |
|
|
Nedávno jsem v práci řešil něco podobného. Šlo o výpočet texturových koordinátů pro sférickou mapou mléčné dráhy. Vertexy jsem přidávat nemohl, protože sky se kreslí jako jeden veliký triangl a sampluje atmosféru. Přesně se mi stalo to, co frcovi: v místě, kde se potkává 0 s 1 vznikla čára, protože se vybrala nejmenší mipmapa.
Nakonec jsem použil funkci textureGrad, která bere custom uv derivace. K tomuto účelu jsem vypočetl ještě jedny UVčka bokem, který sice nejsou použitelný pro mapování, ale mají vhodný průběh (šev je mimo zorný pole) a derivace jsou stejný.
kód: |
// Vn je view vektor, pc.mvi je invertovaná model view matice
vec3 C = mat3(pc.mvi) * Vn;
vec2 uv;
uv.x = (1.0 - (atan(C.y, C.x) / M_PI)) * 0.5;
uv.y = 0.5 + (asin(C.z) / M_PI);
vec2 uvD;
uvD.x = (1.0 - (atan(Vn.z, Vn.x) / M_PI)) * 0.5;
uvD.y = 0.5 + (asin(Vn.y) / M_PI);
vec3 milkyway_color = textureGrad(milkyway, uv, dFdx(uvD), dFdy(uvD)).rgb;
|
_________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
|