Files
davinci2/test/shader/test_vertex_shader.osl
T
2025-06-11 22:45:11 +08:00

41 lines
1.1 KiB
Plaintext

//
shader
standard_shader(
point a_position = vector(0, 0, 0) [[ string attribute="POSITION"]],
vector a_normal = vector(0, 1, 0) [[ string attribute="NORMAL"]],
float a_uv[2] = {0,0} [[ string attribute="TEXCOORD_0"]],
output point v_position = point(0, 0, 0) [[ string attribute="POSITION"]],
output vector v_normal = vector(0,1,0) [[ string attribute="NORMAL"]],
output float v_uv[2] = {0, 0} [[ string attribute="TEXCOORD_0"]],
output vector v_toCamera = vector(0, 0, 0),
output vector v_toLight = vector(0, 0, 0)
)
{
matrix mat_world;
getattribute("self:world_transform", mat_world);
//matrix mat_normal;
//getattribute("self:normal_transform", mat_normal);
matrix mat_camera_view_proj;
getattribute("camera:view_proj", mat_camera_view_proj);
point camera_position;
getattribute("camera:eye_pos", camera_position);
point light0_position;
getattribute("light0:position", light0_position);
v_position = transform(mat_camera_view_proj, transform(mat_world, a_position));
v_normal = a_normal;
v_uv = a_uv;
v_toCamera = normalize(camera_position-v_position);
v_toLight = normalize(light0_position-v_position);
}