1
0
forked from Rowland/EG
EG/RenderPipelineFile/effects/basic_instancing.yaml
2025-07-24 11:37:46 +08:00

29 lines
820 B
YAML

# Terrain effect
# This effect uses prodecural shader splatting, you most likely want to modify
# it with your own texture-map generation code.
vertex:
inout: |
uniform samplerBuffer InstancingData;
transform: |
int data_index = gl_InstanceID * 4;
vec4 data_0 = texelFetch(InstancingData, data_index);
vec4 data_1 = texelFetch(InstancingData, data_index + 1);
vec4 data_2 = texelFetch(InstancingData, data_index + 2);
vec4 data_3 = texelFetch(InstancingData, data_index + 3);
mat4 transform_mat = mat4(data_0, data_1, data_2, data_3);
vOutput.position = (transform_mat * p3d_Vertex).xyz;
// Also transform normal, not 100% correct but works out nicely
vOutput.normal = mat3(transform_mat) * vOutput.normal;
fragment: