fix billboards
parent
2eca87099a
commit
c6b771056a
|
@ -116,7 +116,12 @@ vec3 get_object_pos() {
|
|||
return objPos;
|
||||
}
|
||||
|
||||
void setup_billboard(mat4 modelView, mat4 l_model) {
|
||||
struct billboard_t {
|
||||
mat4 modelView;
|
||||
mat4 l_model;
|
||||
};
|
||||
|
||||
billboard_t setup_billboard(mat4 modelView, mat4 l_model) {
|
||||
if(u_billboard > 0) {
|
||||
vec3 cameraPosition = -transpose(mat3(view)) * view[3].xyz;
|
||||
vec3 lookDir = normalize(cameraPosition - v_position_ws);
|
||||
|
@ -145,4 +150,8 @@ void setup_billboard(mat4 modelView, mat4 l_model) {
|
|||
if((u_billboard & 0x1) != 0) l_model[2] = billboardRotation[2];
|
||||
modelView = view * l_model;
|
||||
}
|
||||
billboard_t bb;
|
||||
bb.modelView = modelView;
|
||||
bb.l_model = l_model;
|
||||
return bb;
|
||||
}
|
|
@ -16,7 +16,9 @@ void main() {
|
|||
mat4 l_model = att_instanced_matrix;
|
||||
v_position_ws = (l_model * vec4( objPos, 1.0 )).xyz;
|
||||
|
||||
setup_billboard(modelView, l_model);
|
||||
billboard_t bb = setup_billboard(modelView, l_model);
|
||||
modelView = bb.modelView;
|
||||
l_model = bb.l_model;
|
||||
|
||||
v_position_ws = (l_model * vec4( objPos, 1.0 )).xyz;
|
||||
v_tangent = normalize(mat3(att_instanced_matrix) * att_tangent.xyz);
|
||||
|
|
Loading…
Reference in New Issue