diff --git a/Effects/PBREffect.fx b/Effects/PBREffect.fx index 7944e13..ca66512 100644 --- a/Effects/PBREffect.fx +++ b/Effects/PBREffect.fx @@ -55,11 +55,11 @@ PixelShaderInput main_vs(VertexShaderInput input) { PixelShaderInput output; - output.PositionWS = mul(input.Position, World).xyz; output.TexCoord = input.TexCoord; - output.NormalWS = normalize(mul(input.Normal, WorldInverseTranspose)); - + output.PositionWS = mul(input.Position, World).xyz; + output.NormalWS = mul(input.Normal, WorldInverseTranspose); output.Position = mul(input.Position, WorldViewProjection); + return output; } @@ -104,7 +104,7 @@ float GeometrySmith(float3 N, float3 V, float3 L, float roughness) } // The case where we have no texture maps for any PBR data -float4 None(PixelShaderInput input) : SV_TARGET +float4 None(PixelShaderInput input) : SV_TARGET0 { float3 albedo = AlbedoValue; float metallic = MetallicValue; @@ -208,7 +208,7 @@ float4 AlbedoMapPS(PixelShaderInput input) : SV_TARGET float4 AlbedoMetallicRoughnessMapPS(PixelShaderInput input) : SV_TARGET { - float3 albedo = SAMPLE_TEXTURE(AlbedoTexture, input.TexCoord).rgb; + float3 albedo = pow(SAMPLE_TEXTURE(AlbedoTexture, input.TexCoord), 2.2).rgb; float2 metallicRoughness = SAMPLE_TEXTURE(MetallicRoughnessTexture, input.TexCoord).rg; float metallic = metallicRoughness.r; float roughness = metallicRoughness.g; @@ -263,6 +263,6 @@ Technique PBR Pass Pass1 { VertexShader = compile vs_3_0 main_vs(); - PixelShader = compile ps_3_0 None(); + PixelShader = compile ps_3_0 AlbedoMetallicRoughnessMapPS(); } } diff --git a/Effects/PBREffect.fxb b/Effects/PBREffect.fxb index f4d7e8f..217a521 100644 Binary files a/Effects/PBREffect.fxb and b/Effects/PBREffect.fxb differ diff --git a/Importer.cs b/Importer.cs index 64f65f7..97f8a03 100644 --- a/Importer.cs +++ b/Importer.cs @@ -218,6 +218,7 @@ namespace Smuggler graphicsDevice, metallicRoughnessChannel.Value.Texture.PrimaryImage.Content.Open() ); + System.Console.WriteLine(effect.MetallicRoughnessTexture.Width); } var parameter = metallicRoughnessChannel.Value.Parameter; @@ -231,24 +232,24 @@ namespace Smuggler effect.AO = 1f; effect.Lights[0] = new PBRLight( - new Vector3(-10f, 10f, -10f), + new Vector3(-10f, 10f, -5f), new Vector3(300f, 300f, 300f) ); - // effect.Lights[1] = new PBRLight( - // new Vector3(10f, 10f, 10f), - // new Vector3(300f, 300f, 300f) - // ); + effect.Lights[1] = new PBRLight( + new Vector3(10f, 10f, 5f), + new Vector3(300f, 300f, 300f) + ); - // effect.Lights[2] = new PBRLight( - // new Vector3(-10f, -10f, 10f), - // new Vector3(300f, 300f, 300f) - // ); + effect.Lights[2] = new PBRLight( + new Vector3(-10f, -10f, 5f), + new Vector3(300f, 300f, 300f) + ); - // effect.Lights[3] = new PBRLight( - // new Vector3(10f, -10f, 10f), - // new Vector3(300f, 300f, 300f) - // ); + effect.Lights[3] = new PBRLight( + new Vector3(10f, -10f, 5f), + new Vector3(300f, 300f, 300f) + ); /* FIXME: how to load cube maps from GLTF? */ /* @@ -311,7 +312,7 @@ namespace Smuggler for (int i = 0; i < normals.Length; i++) { var normal = normalAccessor[i]; - normals[i] = -new Vector3(normal.X, normal.Z, normal.Y); + normals[i] = new Vector3(-normal.X, -normal.Z, normal.Y); } return normals; @@ -415,6 +416,7 @@ namespace Smuggler uint[] indices, Vector3[] positions ) { + System.Console.WriteLine("normals"); var normals = Normals(primitive); var texcoords = TexCoords(primitive);