如何在DirectX 11中进行静态环境映射?

问题描述 投票:0回答:1

我已经加载了.dds立方体贴图纹理并将其放在球体模型上。显然,它看起来不正确,因为我必须将纹理映射到球体上的正确点。

如何将纹理映射到球体上的正确点?

graphics directx
1个回答
0
投票

类似的东西:

TextureCube TEXTURE_REFLECTION;
//...
VS_OUTPUT vs(VS_INPUT IN) {
  //...
  float4 worldPosition = mul(float4(IN.Position.xyz, 1.0f), IN.World);
  OUT.worldpos = worldPosition.xyz;
  //...
}
PS_OUTPUT ps(VS_OUTPUT IN) {
    //...
    float4 ColorTex = TEXTURE_DIFFUSE.Sample(SAMPLER_DEFAULT, IN.TexCoord);
    float3 normalFromMap = mul(2.0f * TEXTURE_NORMAL.Sample(SAMPLER_DEFAULT, IN.TexCoord).xyz - 1.0f), IN.tangentToWorld);
    //...
    float3 incident = -normalize(CAMERA_POSITION - IN.worldpos);
    float3 reflectionVector = reflect(incident, normalFromMap);
    ColorTex.rgb = lerp(ColorTex.rgb, TEXTURE_REFLECTION.Sample(SAMPLER_DEFAULT, reflectionVector).rgb, MATERIAL_REFLECTIVITY);
}
© www.soinside.com 2019 - 2024. All rights reserved.