0
votes

I have the .dds cube map texture loaded it in and put it on the sphere model. Obviously it doesn't look right, because I would have to map the texture to the right points on the sphere.

how can I map the texture to the right points on the sphere?

2

2 Answers

0
votes

somethings like that:

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);
}
0
votes

I figured it out.

Pixel shader:

TextureCube CubeMap: register(t0); 
SamplerState TexSampler : register(s0); 

float4 main(LightingPixelShaderInput input) : SV_Target
{  
    float4 cubeTexture = CubeMap.Sample(TexSampler, input.worldNormal);

    //light calculations

    float3 finalColour = (gAmbientColour + diffuseLights) * cubeTexture.rgb +
                         (specularLights) * cubeTexture.a;
    
   
    return float4(finalColour, 1.0f);
}