mirror of
https://github.com/encounter/aurora.git
synced 2025-07-04 20:26:07 +00:00
add specular lighting (#6)
* add specular lighting * Update gx_shader.cpp * Update gx_shader.cpp * Update gx_shader.cpp
This commit is contained in:
parent
23522538e1
commit
dfa555263c
@ -888,8 +888,15 @@ wgpu::ShaderModule build_shader(const ShaderConfig& config, const ShaderInfo& in
|
||||
var dist_attn = dot(light.dist_att, vec3f(1.0, dist, dist2));
|
||||
attn = max(0.0, cos_attn / dist_attn);)""");
|
||||
} else if (cc.attnFn == GX_AF_SPEC) {
|
||||
diffFn = GX_DF_NONE;
|
||||
FATAL("AF_SPEC unimplemented");
|
||||
std::string normal = UsePerPixelLighting ? "in.mv_nrm" : "mv_nrm";
|
||||
std::string dist_attn = diffFn != GX_DF_NONE
|
||||
? "max(0.0, dot(normalize(light.dist_att), vec3f(1.0, attn, attn * attn)));"
|
||||
: "max(0.0, dot(light.dist_att, vec3f(1.0, attn, attn * attn)));";
|
||||
lightAttnFn = fmt::format(R"""(
|
||||
attn = select(0.0, max(0.0, dot({0}, light.dir)), dot({0}, ldir) >= 0.0);
|
||||
var cos_attn = dot(light.cos_att, vec3f(1.0, attn, attn * attn));
|
||||
var dist_attn = {1};
|
||||
attn = max(0.0, cos_attn / dist_attn);)""", normal, dist_attn);
|
||||
}
|
||||
if (diffFn == GX_DF_NONE) {
|
||||
lightDiffFn = "1.0";
|
||||
|
Loading…
x
Reference in New Issue
Block a user