-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.2
-
None
OpenGL adds a possible flip for the normals in the fragment shader, resulting in opposite normals from D3D11
OpenGL Generated Frag Shader
void main()
{
float qt_objectOpacity = qt_material_properties.a;
vec4 qt_vertColor = qt_varColor;
vec3 qt_view_vector = normalize(qt_cameraPosition - qt_varWorldPos);
vec3 qt_world_normal = normalize(qt_varNormal);
vec3 qt_tangent = normalize(qt_varTangent);
vec3 qt_binormal = normalize(qt_varBinormal);
※ const float qt_facing = gl_FrontFacing ? 1.0 : -1.0;
※
※ qt_world_normal *= qt_facing;
※
※ qt_tangent *= qt_facing;
※ qt_binormal *= qt_facing;
QT_SHARED_VARS qt_customShared;
float qt_customSpecularAmount = 0.5;
float qt_customSpecularRoughness = 0.0;
float qt_customMetalnessAmount = 0.0;
float qt_customFresnelPower = 5.0;
vec4 qt_customBaseColor = vec4(1.0);
vec3 qt_customEmissiveColor = vec3(0.0);
vec2 qt_texCoord0 = qt_varTexCoord0;
vec2 qt_texCoord1 = qt_varTexCoord1;
qt_customMain(qt_customBaseColor, qt_customEmissiveColor, qt_customMetalnessAmount,
D3D11 Generated Frag Shader
void main()
{
float qt_objectOpacity = qt_material_properties.a;
vec4 qt_vertColor = qt_varColor;
vec3 qt_view_vector = normalize(qt_cameraPosition - qt_varWorldPos);
vec3 qt_world_normal = normalize(qt_varNormal);
vec3 qt_tangent = normalize(qt_varTangent);
vec3 qt_binormal = normalize(qt_varBinormal);
※
※
※
※
※
※
QT_SHARED_VARS qt_customShared;
float qt_customSpecularAmount = 0.5;
float qt_customSpecularRoughness = 0.0;
float qt_customMetalnessAmount = 0.0;
float qt_customFresnelPower = 5.0;
vec4 qt_customBaseColor = vec4(1.0);
vec3 qt_customEmissiveColor = vec3(0.0);
vec2 qt_texCoord0 = qt_varTexCoord0;
vec2 qt_texCoord1 = qt_varTexCoord1;
qt_customMain(qt_customBaseColor, qt_customEmissiveColor, qt_customMetalnessAmount, qt_customSpecularRoughness, qt_customSpecularAmount, qt_customFresnelPower, qt_world_normal, qt_tangent, qt_binormal, qt_texCoord0, qt_texCoord1, qt_view_vector, qt_customShared);
OpenGL Frag Shader Debug Header
>pointcloud.vert>pointcloud.frag:4f9ed4804f0bfa09847960666a90b852f7ca46d7;hasLighting=true;lightCount=1;specularModel=Default;;diffuseMap={;;;;};emissiveMap={;;;;};specularMap={;;;;};baseColorMap={;;;;};bumpMap={;;;;};specularAmountMap={;;;;};normalMap={;;;;};opacityMap={;;;;};roughnessMap={;;;;};metalnessMap={;;;;};occlusionMap={;;;;};translucencyMap={;;;;};heightMap={;;;;};opacityMap_channel=R;roughnessMap_channel=R;metalnessMap_channel=R;occlusionMap_channel=R;translucencyMap_channel=R;heightMap_channel=R;boneCount=0;isDoubleSided=true;alphaMode=Default;;vertexAttributes={position=true;;;;;;color=true}};morphTargetCount=0;morphTarget0Attributes={;;;;;;}};morphTarget1Attributes={;;;;;;}};morphTarget2Attributes={;;;;;;}};morphTarget3Attributes={;;;;;;}};morphTarget4Attributes={;;;;;;}};morphTarget5Attributes={;;;;;;}};morphTarget6Attributes={;;;;;;}};morphTarget7Attributes={;;;;;;}}
D3D11 Frag Shader Debug Header
- Does not have isDoubleSided=true;
- Has usesPointsTopology=true;