You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
En el TgcSimpleTerrain las texturas del pasto o tierra en los heighmaps no estan en escala.
El Heightmap puede medir por ejemplo 256 x 256 y es todo el escenario, en proporcion al personaje, que por ejemplo mide 4 x 2 (en este caso un camion), el hmap es gigante. No hay forma de ponerle una textura y que quede bien. Para atacar ese problema, sin entrar en muchas complicaciones, se puede usar una textura (colorMap) con el mismo tamaño del hmap (es decir que ocupa exactamente lo mismo que el heightmap). Esa textura es la que tenia historicamente el Simpleterrain: ahi se ve a la izquierda el hmap y a la derecha el colormap
Despues, otras 2 o 3 texturas, por ejemplo, pasto, tierra y piedras. Estas texturas van a una escala mucho mas grande, y para que no se note el patron repetitivo conviene que esten a distintas escalas de numeros comprimos entre si. La textura tiene que ser "tileable" para que no se note la separacion entre 2 patches suseviso, o bien cualquie textura con MIRROR en address mode, pero eso no queda tan bien como una textura tileable con address mode en WRAP.
El shader del terrain entonces modula la texturas del terreno (tierra, grass, etc) de acuerdo al colormap, (en este caso uso un solo canal, el R indica que tiene mas textura tierra que textura pasto). Y tambien aplica un pseudo ambient occlusion en base a la altura del terrain, cuando mas bajo menos luz se supone que le llega.
En el TgcSimpleTerrain las texturas del pasto o tierra en los heighmaps no estan en escala.
El Heightmap puede medir por ejemplo 256 x 256 y es todo el escenario, en proporcion al personaje, que por ejemplo mide 4 x 2 (en este caso un camion), el hmap es gigante. No hay forma de ponerle una textura y que quede bien. Para atacar ese problema, sin entrar en muchas complicaciones, se puede usar una textura (colorMap) con el mismo tamaño del hmap (es decir que ocupa exactamente lo mismo que el heightmap). Esa textura es la que tenia historicamente el Simpleterrain: ahi se ve a la izquierda el hmap y a la derecha el colormap
Despues, otras 2 o 3 texturas, por ejemplo, pasto, tierra y piedras. Estas texturas van a una escala mucho mas grande, y para que no se note el patron repetitivo conviene que esten a distintas escalas de numeros comprimos entre si. La textura tiene que ser "tileable" para que no se note la separacion entre 2 patches suseviso, o bien cualquie textura con MIRROR en address mode, pero eso no queda tan bien como una textura tileable con address mode en WRAP.
El shader del terrain entonces modula la texturas del terreno (tierra, grass, etc) de acuerdo al colormap, (en este caso uso un solo canal, el R indica que tiene mas textura tierra que textura pasto). Y tambien aplica un pseudo ambient occlusion en base a la altura del terrain, cuando mas bajo menos luz se supone que le llega.
float4 ps_RenderTerrain(PS_INPUT input) : COLOR0
{
float hmin = 61/256;
float hmax = 6254/256;
float h = lerp(0.3 , 1 , (input.WorldPos.y-hmin)/(hmax-hmin));
float3 N = normalize(input.WorldNormal);
float3 L = normalize(lightPosition - input.WorldPos);
float kd = saturate( 0.4 + 0.7*saturate(dot(N, L)));
float3 c = tex2D(colorMap, input.Texcoord).rgb;
float3 tex1 = tex2D(diffuseMap, input.Texcoord31).rgb;
float3 tex2 = tex2D(diffuseMap2, input.Texcoord27).rgb;
float3 tex3 = tex2D(diffuseMap3, input.Texcoord17).rgb;
float3 clr = lerp ( lerp(tex1 , tex3, c.r), c , 0.3);
return float4(clrkd, 1);
}
Aca un par de screen shots como se comporta en las distintas escalas de view:
The text was updated successfully, but these errors were encountered: