graphics - 如何在 DirectX 11 中进行静态环境映射?
问题描述
我将.dds
立方体贴图纹理加载到其中并将其放在球体模型上。显然它看起来不正确,因为我必须将纹理映射到球体上的正确点。
如何将纹理映射到球体上的正确点?
解决方案
像这样的东西:
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);
}
推荐阅读
- java - 如何在 SpringBoot 中以线程安全的方式执行 @Scheduled 作业?
- r - 使用相同任务的 svm 和 ranger 的不同运行时
- python - 使用statsmodels的“plot_acf”绘制自相关函数时如何获取阴影区域的坐标
- c++ - 使用变量的一部分作为布尔值
- python - TP、TN、FP 和 FN 的总数不等于观测值的总数
- jmespath - 如何使用 JMESPATH 将两个 json 对象连接成键值对
- javascript - 如何用 JS 保存当前的 HTML 文件
- or-tools - ORTOOLS CP SAT - XOR 和 AND 组合
- python - 如果条件等于python中的某些东西,则压缩多条
- matlab - 重新排列元胞数组中的元胞