basic PBR is working!
parent
4dab4dfb48
commit
5465b13b9d
|
@ -55,11 +55,11 @@ PixelShaderInput main_vs(VertexShaderInput input)
|
||||||
{
|
{
|
||||||
PixelShaderInput output;
|
PixelShaderInput output;
|
||||||
|
|
||||||
output.PositionWS = mul(input.Position, World).xyz;
|
|
||||||
output.TexCoord = input.TexCoord;
|
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);
|
output.Position = mul(input.Position, WorldViewProjection);
|
||||||
|
|
||||||
return output;
|
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
|
// 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;
|
float3 albedo = AlbedoValue;
|
||||||
float metallic = MetallicValue;
|
float metallic = MetallicValue;
|
||||||
|
@ -208,7 +208,7 @@ float4 AlbedoMapPS(PixelShaderInput input) : SV_TARGET
|
||||||
|
|
||||||
float4 AlbedoMetallicRoughnessMapPS(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;
|
float2 metallicRoughness = SAMPLE_TEXTURE(MetallicRoughnessTexture, input.TexCoord).rg;
|
||||||
float metallic = metallicRoughness.r;
|
float metallic = metallicRoughness.r;
|
||||||
float roughness = metallicRoughness.g;
|
float roughness = metallicRoughness.g;
|
||||||
|
@ -263,6 +263,6 @@ Technique PBR
|
||||||
Pass Pass1
|
Pass Pass1
|
||||||
{
|
{
|
||||||
VertexShader = compile vs_3_0 main_vs();
|
VertexShader = compile vs_3_0 main_vs();
|
||||||
PixelShader = compile ps_3_0 None();
|
PixelShader = compile ps_3_0 AlbedoMetallicRoughnessMapPS();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
30
Importer.cs
30
Importer.cs
|
@ -218,6 +218,7 @@ namespace Smuggler
|
||||||
graphicsDevice,
|
graphicsDevice,
|
||||||
metallicRoughnessChannel.Value.Texture.PrimaryImage.Content.Open()
|
metallicRoughnessChannel.Value.Texture.PrimaryImage.Content.Open()
|
||||||
);
|
);
|
||||||
|
System.Console.WriteLine(effect.MetallicRoughnessTexture.Width);
|
||||||
}
|
}
|
||||||
|
|
||||||
var parameter = metallicRoughnessChannel.Value.Parameter;
|
var parameter = metallicRoughnessChannel.Value.Parameter;
|
||||||
|
@ -231,24 +232,24 @@ namespace Smuggler
|
||||||
effect.AO = 1f;
|
effect.AO = 1f;
|
||||||
|
|
||||||
effect.Lights[0] = new PBRLight(
|
effect.Lights[0] = new PBRLight(
|
||||||
new Vector3(-10f, 10f, -10f),
|
new Vector3(-10f, 10f, -5f),
|
||||||
new Vector3(300f, 300f, 300f)
|
new Vector3(300f, 300f, 300f)
|
||||||
);
|
);
|
||||||
|
|
||||||
// effect.Lights[1] = new PBRLight(
|
effect.Lights[1] = new PBRLight(
|
||||||
// new Vector3(10f, 10f, 10f),
|
new Vector3(10f, 10f, 5f),
|
||||||
// new Vector3(300f, 300f, 300f)
|
new Vector3(300f, 300f, 300f)
|
||||||
// );
|
);
|
||||||
|
|
||||||
// effect.Lights[2] = new PBRLight(
|
effect.Lights[2] = new PBRLight(
|
||||||
// new Vector3(-10f, -10f, 10f),
|
new Vector3(-10f, -10f, 5f),
|
||||||
// new Vector3(300f, 300f, 300f)
|
new Vector3(300f, 300f, 300f)
|
||||||
// );
|
);
|
||||||
|
|
||||||
// effect.Lights[3] = new PBRLight(
|
effect.Lights[3] = new PBRLight(
|
||||||
// new Vector3(10f, -10f, 10f),
|
new Vector3(10f, -10f, 5f),
|
||||||
// new Vector3(300f, 300f, 300f)
|
new Vector3(300f, 300f, 300f)
|
||||||
// );
|
);
|
||||||
|
|
||||||
/* FIXME: how to load cube maps from GLTF? */
|
/* FIXME: how to load cube maps from GLTF? */
|
||||||
/*
|
/*
|
||||||
|
@ -311,7 +312,7 @@ namespace Smuggler
|
||||||
for (int i = 0; i < normals.Length; i++)
|
for (int i = 0; i < normals.Length; i++)
|
||||||
{
|
{
|
||||||
var normal = normalAccessor[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;
|
return normals;
|
||||||
|
@ -415,6 +416,7 @@ namespace Smuggler
|
||||||
uint[] indices,
|
uint[] indices,
|
||||||
Vector3[] positions
|
Vector3[] positions
|
||||||
) {
|
) {
|
||||||
|
System.Console.WriteLine("normals");
|
||||||
var normals = Normals(primitive);
|
var normals = Normals(primitive);
|
||||||
var texcoords = TexCoords(primitive);
|
var texcoords = TexCoords(primitive);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue