Trying to add opacity
This commit is contained in:
@@ -34,6 +34,6 @@ float4 fragmentMain(in FragmentParameter params) : SV_Target
|
||||
// gamma correction
|
||||
result = result / (result + float3(1.0));
|
||||
result = pow(result, float3(1.0/2.2));
|
||||
return float4(result, 1.0f);
|
||||
return float4(result, brdf.getAlpha());
|
||||
}
|
||||
|
||||
@@ -4,11 +4,13 @@ interface IBRDF
|
||||
{
|
||||
float3 evaluate(float3 viewDir_TS, float3 lightDir_TS, float3 lightColor);
|
||||
float3 evaluateAmbient();
|
||||
float getAlpha();
|
||||
};
|
||||
|
||||
struct Phong : IBRDF
|
||||
{
|
||||
float3 baseColor;
|
||||
float alpha;
|
||||
float3 specular;
|
||||
float3 normal;
|
||||
float3 ambient;
|
||||
@@ -16,6 +18,7 @@ struct Phong : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
}
|
||||
|
||||
@@ -33,11 +36,16 @@ struct Phong : IBRDF
|
||||
{
|
||||
return ambient;
|
||||
}
|
||||
float getAlpha()
|
||||
{
|
||||
return alpha;
|
||||
}
|
||||
};
|
||||
|
||||
struct BlinnPhong : IBRDF
|
||||
{
|
||||
float3 baseColor;
|
||||
float alpha;
|
||||
float3 specularColor;
|
||||
float3 normal;
|
||||
float shininess;
|
||||
@@ -45,6 +53,7 @@ struct BlinnPhong : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
}
|
||||
|
||||
@@ -62,15 +71,21 @@ struct BlinnPhong : IBRDF
|
||||
{
|
||||
return ambient;
|
||||
}
|
||||
float getAlpha()
|
||||
{
|
||||
return alpha;
|
||||
}
|
||||
};
|
||||
|
||||
struct CelShading : IBRDF
|
||||
{
|
||||
float3 baseColor;
|
||||
float alpha;
|
||||
float3 normal;
|
||||
|
||||
__init()
|
||||
{
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
}
|
||||
|
||||
@@ -94,12 +109,17 @@ struct CelShading : IBRDF
|
||||
{
|
||||
return float3(0, 0, 0);
|
||||
}
|
||||
float getAlpha()
|
||||
{
|
||||
return alpha;
|
||||
}
|
||||
};
|
||||
|
||||
// https://learnopengl.com/PBR/Theory
|
||||
struct CookTorrance : IBRDF
|
||||
{
|
||||
float3 baseColor;
|
||||
float alpha;
|
||||
float3 normal;
|
||||
float roughness;
|
||||
float metallic;
|
||||
@@ -107,6 +127,7 @@ struct CookTorrance : IBRDF
|
||||
|
||||
__init()
|
||||
{
|
||||
alpha = 1;
|
||||
normal = float3(0, 0, 1);
|
||||
roughness = 0;
|
||||
metallic = 0;
|
||||
@@ -176,4 +197,8 @@ struct CookTorrance : IBRDF
|
||||
{
|
||||
return float3(0.03) * baseColor * ambientOcclusion;
|
||||
}
|
||||
float getAlpha()
|
||||
{
|
||||
return alpha;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -39,7 +39,7 @@ void closestHit(inout RayPayload hitValue, in BuiltInTriangleIntersectionAttribu
|
||||
LightingParameter lightingParams = params.getLightingParameter();
|
||||
MaterialParameter materialParams = params.getMaterialParameter();
|
||||
let brdf = Material.prepare(materialParams);
|
||||
|
||||
|
||||
float3 result = float3(0, 0, 0);
|
||||
for(int i = 0; i < pLightEnv.numDirectionalLights; ++i)
|
||||
{
|
||||
@@ -53,5 +53,7 @@ void closestHit(inout RayPayload hitValue, in BuiltInTriangleIntersectionAttribu
|
||||
// gamma correction
|
||||
result = result / (result + float3(1.0));
|
||||
result = pow(result, float3(1.0/2.2));
|
||||
|
||||
|
||||
hitValue.color = result;
|
||||
}
|
||||
@@ -19,6 +19,7 @@ void raygen()
|
||||
rayDesc.TMax = 10000.0;
|
||||
|
||||
RayPayload payload;
|
||||
payload.rayDirection = rayDesc.Direction;
|
||||
TraceRay(pRayTracingParams.scene, RAY_FLAG_FORCE_OPAQUE, 0xff, 0, 0, 0, rayDesc, payload);
|
||||
|
||||
pRayTracingParams.image[int2(LaunchID.xy)] = float4(payload.color, 1.0);
|
||||
|
||||
@@ -17,5 +17,6 @@ struct CallablePayload
|
||||
|
||||
struct RayPayload
|
||||
{
|
||||
float3 rayDirection;
|
||||
float3 color;
|
||||
};
|
||||
Reference in New Issue
Block a user