diff --git a/Assets/backbox.hlsl b/Assets/backbox.hlsl index 0fa122d..5faf170 100644 --- a/Assets/backbox.hlsl +++ b/Assets/backbox.hlsl @@ -2,16 +2,23 @@ //--name = dofdev/backbox //--color:color = 1, 1, 1, 1 +//--tex_scale = 1 +//--diffuse = white float4 color; +float tex_scale; +Texture2D diffuse : register(t0); +SamplerState diffuse_s : register(s0); struct vsIn { float4 pos : SV_Position; float3 norm : NORMAL0; + float2 uv : TEXCOORD0; // float4 col : COLOR0; }; struct psIn { float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; float4 color : COLOR0; float3 normal : NORMAL0; float3 world_pos : WORLD; @@ -35,16 +42,19 @@ psIn vs(vsIn input, uint id : SV_InstanceID) { // flip input normals to treat backfaces like normal o.normal = normalize(mul(-input.norm, (float3x3)sk_inst[id].world)); + o.uv = input.uv * tex_scale; o.color = color * sk_inst[id].color; return o; } float4 ps(psIn input) : SV_TARGET { + float4 col = diffuse.Sample(diffuse_s, input.uv); + float3 view_dir = normalize(input.world_pos - input.cam_pos); - + // Fresnel effect calculation float fresnel = 1.0 - saturate(dot(-view_dir, input.normal)); fresnel = pow(fresnel, 5.0); // Adjust power for different falloff rates float value = 0.5; - return float4(fresnel * input.color.rgb * value, input.color.a); + return lerp(col, float4(1), 0.666) * float4(fresnel * input.color.rgb * value, input.color.a); } \ No newline at end of file diff --git a/Assets/meshes/assets.glb b/Assets/meshes/assets.glb index 7a481c4..415bda9 100644 --- a/Assets/meshes/assets.glb +++ b/Assets/meshes/assets.glb @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d3f5774cbab8eea4d3343b26fd6c5faeb8ae71c09fae06ed9b6e4fad745f0d82 -size 411484 +oid sha256:694f06999b3c9acacca1415e3781ec5da92c1fc71e4594d5f1b73a7cb1e28c9a +size 395608 diff --git a/Assets/paper.jpg b/Assets/paper.jpg new file mode 100644 index 0000000..3a7a36d Binary files /dev/null and b/Assets/paper.jpg differ diff --git a/Assets/unlit.hlsl b/Assets/unlit.hlsl index 9f698f2..19e294f 100644 --- a/Assets/unlit.hlsl +++ b/Assets/unlit.hlsl @@ -40,7 +40,7 @@ psIn vs(vsIn input, uint id : SV_InstanceID) { float4 ps(psIn input) : SV_TARGET { float4 col = diffuse.Sample(diffuse_s, input.uv); - col = col * input.color; + col = lerp(col, float4(1), 0.666) * input.color; return col; } \ No newline at end of file diff --git a/src/Arts.cs b/src/Arts.cs index a9939e4..3a918fb 100644 --- a/src/Arts.cs +++ b/src/Arts.cs @@ -14,6 +14,7 @@ static class Arts static Material mat_backbox = new Material("backbox.hlsl"); static Material mat_justcolor = new Material("justcolor.hlsl"); + static Tex tex_box = Tex.FromFile("paper.jpg"); static Quat food_ori = Quat.Identity; static XYZi last_headpos = new(0, 0, 0); @@ -31,6 +32,9 @@ static class Arts } } + // mat_mono.SetTexture("diffuse", tex_mono); + mat_box.SetTexture("diffuse", tex_box); + mat_backbox.SetTexture("diffuse", tex_box); mat_backbox.FaceCull = Cull.Front; mat_backbox.Transparency = Transparency.Add;