Reduce shader count
This commit is contained in:
parent
0ec80ebeff
commit
42b4185187
|
@ -11,10 +11,8 @@
|
||||||
"color_write_alpha": false,
|
"color_write_alpha": false,
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blend_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
"fragment_shader": "../include/pass_copy.frag.glsl"
|
||||||
"fragment_shader": "blend_pass.frag.glsl",
|
|
||||||
"fragment_shader_path": "../include/pass.frag.glsl"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "bloom_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "bloom_pass.frag.glsl"
|
"fragment_shader": "bloom_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_adaptive_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_adaptive_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -49,8 +47,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_adaptive_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -66,8 +63,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_adaptive_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -86,8 +82,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_adaptive_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
"fragment_shader": "blur_adaptive_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_edge_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_edge_pass.frag.glsl"
|
"fragment_shader": "blur_edge_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_edge_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_edge_pass.frag.glsl"
|
"fragment_shader": "blur_edge_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -50,8 +48,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_edge_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_edge_pass.frag.glsl"
|
"fragment_shader": "blur_edge_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -74,8 +71,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_edge_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_edge_pass.frag.glsl"
|
"fragment_shader": "blur_edge_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -17,8 +17,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_gaus_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -38,8 +37,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_gaus_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -62,8 +60,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_gaus_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
"fragment_shader": "blur_gaus_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_pass.frag.glsl"
|
"fragment_shader": "blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_pass.frag.glsl"
|
"fragment_shader": "blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -49,8 +47,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_pass.frag.glsl"
|
"fragment_shader": "blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -66,8 +63,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_pass.frag.glsl"
|
"fragment_shader": "blur_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_shadow_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_shadow_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -50,8 +48,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_shadow_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -74,8 +71,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "blur_shadow_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
"fragment_shader": "blur_shadow_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
"cull_mode": "none",
|
"cull_mode": "none",
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "combine_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "combine_pass.frag.glsl"
|
"fragment_shader": "combine_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -7,10 +7,8 @@
|
||||||
"cull_mode": "none",
|
"cull_mode": "none",
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "copy_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
"fragment_shader": "../include/pass_copy.frag.glsl"
|
||||||
"fragment_shader": "copy_pass.frag.glsl",
|
|
||||||
"fragment_shader_path": "../include/pass.frag.glsl"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "debug_normals.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "debug_normals.frag.glsl"
|
"fragment_shader": "debug_normals.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -8,8 +8,7 @@
|
||||||
"cull_mode": "none",
|
"cull_mode": "none",
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "debug_velocity.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "debug_velocity.frag.glsl"
|
"fragment_shader": "debug_velocity.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -117,8 +117,7 @@
|
||||||
"ifdef": ["_DFRS"]
|
"ifdef": ["_DFRS"]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"vertex_shader": "deferred_light.vert.glsl",
|
"vertex_shader": "../include/pass_lamp_volume.vert.glsl",
|
||||||
"vertex_shader_path": "../include/lamp_volume.vert.glsl",
|
|
||||||
"fragment_shader": "deferred_light.frag.glsl"
|
"fragment_shader": "deferred_light.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -86,8 +86,7 @@
|
||||||
"link": "_cameraPlaneProj"
|
"link": "_cameraPlaneProj"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"vertex_shader": "deferred_light_quad.vert.glsl",
|
"vertex_shader": "../include/pass_viewray.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass_viewray.vert.glsl",
|
|
||||||
"fragment_shader": "deferred_light_quad.frag.glsl"
|
"fragment_shader": "deferred_light_quad.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -12,8 +12,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "dilate_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "dilate_pass.frag.glsl"
|
"fragment_shader": "dilate_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -28,8 +27,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "dilate_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "dilate_pass.frag.glsl"
|
"fragment_shader": "dilate_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "fxaa_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "fxaa_pass.frag.glsl"
|
"fragment_shader": "fxaa_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -34,8 +34,7 @@
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "grease_pencil_shadows.vert.glsl",
|
"vertex_shader": "grease_pencil_shadows.vert.glsl",
|
||||||
"fragment_shader": "grease_pencil_shadows.frag.glsl",
|
"fragment_shader": "../include/empty.frag.glsl"
|
||||||
"fragment_shader_path": "../include/empty.frag.glsl"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
#version 450
|
|
||||||
|
|
||||||
out vec4 fragColor;
|
|
||||||
|
|
||||||
void main() {
|
|
||||||
|
|
||||||
}
|
|
0
Shaders/include/lamp_volume.vert.glsl → Shaders/include/pass_lamp_volume.vert.glsl
Executable file → Normal file
0
Shaders/include/lamp_volume.vert.glsl → Shaders/include/pass_lamp_volume.vert.glsl
Executable file → Normal file
|
@ -11,8 +11,7 @@
|
||||||
"cull_mode": "none",
|
"cull_mode": "none",
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "matid_to_depth.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "matid_to_depth.frag.glsl"
|
"fragment_shader": "matid_to_depth.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -29,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "motion_blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass_viewray.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass_viewray.vert.glsl",
|
|
||||||
"fragment_shader": "motion_blur_pass.frag.glsl"
|
"fragment_shader": "motion_blur_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,8 +14,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "motion_blur_veloc_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "motion_blur_veloc_pass.frag.glsl"
|
"fragment_shader": "motion_blur_veloc_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -36,8 +36,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssao_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "ssao_pass.frag.glsl"
|
"fragment_shader": "ssao_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssgi_blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -30,8 +29,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssgi_blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -50,8 +48,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssgi_blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -74,8 +71,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssgi_blur_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
"fragment_shader": "ssgi_blur_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -24,8 +24,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssgi_pass.vert.glsl",
|
"vertex_shader": "../include/pass_viewray2.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass_viewray2.vert.glsl",
|
|
||||||
"fragment_shader": "ssgi_pass.frag.glsl"
|
"fragment_shader": "ssgi_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -25,8 +25,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "ssr_pass.vert.glsl",
|
"vertex_shader": "../include/pass_viewray2.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass_viewray2.vert.glsl",
|
|
||||||
"fragment_shader": "ssr_pass.frag.glsl"
|
"fragment_shader": "ssr_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "sss_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "sss_pass.frag.glsl"
|
"fragment_shader": "sss_pass.frag.glsl"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -36,8 +35,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "sss_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "sss_pass.frag.glsl"
|
"fragment_shader": "sss_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,8 +13,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "supersample_resolve.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "supersample_resolve.frag.glsl"
|
"fragment_shader": "supersample_resolve.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
"cull_mode": "none",
|
"cull_mode": "none",
|
||||||
"links": [],
|
"links": [],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "taa_pass.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "taa_pass.frag.glsl"
|
"fragment_shader": "taa_pass.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -12,8 +12,7 @@
|
||||||
"alpha_blend_destination": "inverse_source_alpha",
|
"alpha_blend_destination": "inverse_source_alpha",
|
||||||
"alpha_blend_operation": "add",
|
"alpha_blend_operation": "add",
|
||||||
"links": [],
|
"links": [],
|
||||||
"vertex_shader": "translucent_resolve.vert.glsl",
|
"vertex_shader": "../include/pass.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass.vert.glsl",
|
|
||||||
"fragment_shader": "translucent_resolve.frag.glsl"
|
"fragment_shader": "translucent_resolve.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -56,8 +56,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "volumetric_light.vert.glsl",
|
"vertex_shader": "../include/pass_lamp_volume.vert.glsl",
|
||||||
"vertex_shader_path": "../include/lamp_volume.vert.glsl",
|
|
||||||
"fragment_shader": "volumetric_light.frag.glsl"
|
"fragment_shader": "volumetric_light.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -54,8 +54,7 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"texture_params": [],
|
"texture_params": [],
|
||||||
"vertex_shader": "volumetric_light_quad.vert.glsl",
|
"vertex_shader": "../include/pass_viewray.vert.glsl",
|
||||||
"vertex_shader_path": "../include/pass_viewray.vert.glsl",
|
|
||||||
"fragment_shader": "volumetric_light_quad.frag.glsl"
|
"fragment_shader": "volumetric_light_quad.frag.glsl"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,6 +13,8 @@ shaders = []
|
||||||
shaders_last = []
|
shaders_last = []
|
||||||
shader_datas = []
|
shader_datas = []
|
||||||
shader_passes = []
|
shader_passes = []
|
||||||
|
shader_passes_assets = {}
|
||||||
|
shader_cons = {}
|
||||||
|
|
||||||
def reset():
|
def reset():
|
||||||
global assets
|
global assets
|
||||||
|
@ -22,6 +24,7 @@ def reset():
|
||||||
global shaders
|
global shaders
|
||||||
global shaders_last
|
global shaders_last
|
||||||
global shader_datas
|
global shader_datas
|
||||||
|
global shader_cons
|
||||||
assets = []
|
assets = []
|
||||||
khafile_defs_last = khafile_defs
|
khafile_defs_last = khafile_defs
|
||||||
khafile_defs = []
|
khafile_defs = []
|
||||||
|
@ -30,6 +33,13 @@ def reset():
|
||||||
shaders = []
|
shaders = []
|
||||||
shader_datas = []
|
shader_datas = []
|
||||||
shader_passes = []
|
shader_passes = []
|
||||||
|
shader_cons = {}
|
||||||
|
shader_cons['mesh_vert'] = []
|
||||||
|
shader_cons['depth_vert'] = []
|
||||||
|
shader_cons['depth_frag'] = []
|
||||||
|
shader_cons['voxel_vert'] = []
|
||||||
|
shader_cons['voxel_frag'] = []
|
||||||
|
shader_cons['voxel_geom'] = []
|
||||||
|
|
||||||
def add(file):
|
def add(file):
|
||||||
global assets
|
global assets
|
||||||
|
@ -67,9 +77,6 @@ def add_shader_pass(data_name):
|
||||||
add_shader_data(arm.utils.build_dir() + '/compiled/Shaders/shader_datas.arm')
|
add_shader_data(arm.utils.build_dir() + '/compiled/Shaders/shader_datas.arm')
|
||||||
if data_name not in shader_passes:
|
if data_name not in shader_passes:
|
||||||
shader_passes.append(data_name)
|
shader_passes.append(data_name)
|
||||||
full_name = arm.utils.build_dir() + '/compiled/Shaders/' + data_name
|
|
||||||
add_shader(full_name + '.vert.glsl')
|
|
||||||
add_shader(full_name + '.frag.glsl')
|
|
||||||
|
|
||||||
invalidate_enabled = True # Disable invalidating during build process
|
invalidate_enabled = True # Disable invalidating during build process
|
||||||
|
|
||||||
|
@ -115,3 +122,27 @@ def invalidate_envmap_data(self, context):
|
||||||
fp = arm.utils.get_fp_build()
|
fp = arm.utils.get_fp_build()
|
||||||
if os.path.isdir(fp + '/compiled/Assets/envmaps'):
|
if os.path.isdir(fp + '/compiled/Assets/envmaps'):
|
||||||
shutil.rmtree(fp + '/compiled/Assets/envmaps', onerror=remove_readonly)
|
shutil.rmtree(fp + '/compiled/Assets/envmaps', onerror=remove_readonly)
|
||||||
|
|
||||||
|
def shader_equal(sh, ar, shtype):
|
||||||
|
# Merge equal shaders
|
||||||
|
for e in ar:
|
||||||
|
if sh.is_equal(e):
|
||||||
|
sh.context.data[shtype] = e.context.data[shtype]
|
||||||
|
sh.is_linked = True
|
||||||
|
return
|
||||||
|
ar.append(sh)
|
||||||
|
|
||||||
|
def vs_equal(c, ar):
|
||||||
|
shader_equal(c.vert, ar, 'vertex_shader')
|
||||||
|
|
||||||
|
def fs_equal(c, ar):
|
||||||
|
shader_equal(c.frag, ar, 'fragment_shader')
|
||||||
|
|
||||||
|
def gs_equal(c, ar):
|
||||||
|
shader_equal(c.geom, ar, 'geometry_shader')
|
||||||
|
|
||||||
|
def tcs_equal(c, ar):
|
||||||
|
shader_equal(c.tesc, ar, 'tesscontrol_shader')
|
||||||
|
|
||||||
|
def tes_equal(c, ar):
|
||||||
|
shader_equal(c.tese, ar, 'tesseval_shader')
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
import arm.utils
|
import arm.utils
|
||||||
|
import arm.assets as assets
|
||||||
|
|
||||||
def write_data(res, defs, json_data, base_name):
|
def write_data(res, defs, json_data, base_name):
|
||||||
# Define
|
# Define
|
||||||
|
@ -11,6 +12,8 @@ def write_data(res, defs, json_data, base_name):
|
||||||
sres['name'] = shader_id
|
sres['name'] = shader_id
|
||||||
sres['contexts'] = []
|
sres['contexts'] = []
|
||||||
|
|
||||||
|
asset = assets.shader_passes_assets[base_name]
|
||||||
|
|
||||||
# Parse
|
# Parse
|
||||||
for c in json_data['contexts']:
|
for c in json_data['contexts']:
|
||||||
con = {}
|
con = {}
|
||||||
|
@ -21,23 +24,28 @@ def write_data(res, defs, json_data, base_name):
|
||||||
con['vertex_structure'] = []
|
con['vertex_structure'] = []
|
||||||
|
|
||||||
# Names
|
# Names
|
||||||
vert_name = c['vertex_shader'].split('.')[0]
|
con['vertex_shader'] = c['vertex_shader'].rsplit('.', 1)[0].split('/')[-1]
|
||||||
frag_name = c['fragment_shader'].split('.')[0]
|
if con['vertex_shader'] not in asset:
|
||||||
if 'geometry_shader' in c:
|
asset.append(con['vertex_shader'])
|
||||||
geom_name = c['geometry_shader'].split('.')[0]
|
|
||||||
if 'tesscontrol_shader' in c:
|
con['fragment_shader'] = c['fragment_shader'].rsplit('.', 1)[0].split('/')[-1]
|
||||||
tesc_name = c['tesscontrol_shader'].split('.')[0]
|
if con['fragment_shader'] not in asset:
|
||||||
if 'tesseval_shader' in c:
|
asset.append(con['fragment_shader'])
|
||||||
tese_name = c['tesseval_shader'].split('.')[0]
|
|
||||||
|
|
||||||
con['vertex_shader'] = vert_name + '.vert'
|
|
||||||
con['fragment_shader'] = frag_name + '.frag'
|
|
||||||
if 'geometry_shader' in c:
|
if 'geometry_shader' in c:
|
||||||
con['geometry_shader'] = geom_name + '.geom'
|
con['geometry_shader'] = c['geometry_shader'].rsplit('.', 1)[0].split('/')[-1]
|
||||||
|
if con['geometry_shader'] not in asset:
|
||||||
|
asset.append(con['geometry_shader'])
|
||||||
|
|
||||||
if 'tesscontrol_shader' in c:
|
if 'tesscontrol_shader' in c:
|
||||||
con['tesscontrol_shader'] = tesc_name + '.tesc'
|
con['tesscontrol_shader'] = c['tesscontrol_shader'].rsplit('.', 1)[0].split('/')[-1]
|
||||||
|
if con['tesscontrol_shader'] not in asset:
|
||||||
|
asset.append(con['tesscontrol_shader'])
|
||||||
|
|
||||||
if 'tesseval_shader' in c:
|
if 'tesseval_shader' in c:
|
||||||
con['tesseval_shader'] = tese_name + '.tese'
|
con['tesseval_shader'] = c['tesseval_shader'].rsplit('.', 1)[0].split('/')[-1]
|
||||||
|
if con['tesseval_shader'] not in asset:
|
||||||
|
asset.append(con['tesseval_shader'])
|
||||||
|
|
||||||
# Params
|
# Params
|
||||||
params = ['depth_write', 'compare_mode', 'stencil_mode', \
|
params = ['depth_write', 'compare_mode', 'stencil_mode', \
|
||||||
|
@ -53,17 +61,9 @@ def write_data(res, defs, json_data, base_name):
|
||||||
con[p] = c[p]
|
con[p] = c[p]
|
||||||
|
|
||||||
# Parse shaders
|
# Parse shaders
|
||||||
if 'vertex_shader_path' in c:
|
|
||||||
with open(c['vertex_shader_path']) as f:
|
|
||||||
vert = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['vertex_shader']) as f:
|
with open(c['vertex_shader']) as f:
|
||||||
vert = f.read().splitlines()
|
vert = f.read().splitlines()
|
||||||
|
|
||||||
if 'fragment_shader_path' in c:
|
|
||||||
with open(c['fragment_shader_path']) as f:
|
|
||||||
frag = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['fragment_shader']) as f:
|
with open(c['fragment_shader']) as f:
|
||||||
frag = f.read().splitlines()
|
frag = f.read().splitlines()
|
||||||
|
|
||||||
|
@ -71,28 +71,16 @@ def write_data(res, defs, json_data, base_name):
|
||||||
parse_shader(sres, c, con, defs, frag, False)
|
parse_shader(sres, c, con, defs, frag, False)
|
||||||
|
|
||||||
if 'geometry_shader' in c:
|
if 'geometry_shader' in c:
|
||||||
if 'geometry_shader_path' in c:
|
|
||||||
with open(c['geometry_shader_path']) as f:
|
|
||||||
geom = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['geometry_shader']) as f:
|
with open(c['geometry_shader']) as f:
|
||||||
geom = f.read().splitlines()
|
geom = f.read().splitlines()
|
||||||
parse_shader(sres, c, con, defs, geom, False)
|
parse_shader(sres, c, con, defs, geom, False)
|
||||||
|
|
||||||
if 'tesscontrol_shader' in c:
|
if 'tesscontrol_shader' in c:
|
||||||
if 'tesscontrol_shader_path' in c:
|
|
||||||
with open(c['tesscontrol_shader_path']) as f:
|
|
||||||
tesc = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['tesscontrol_shader']) as f:
|
with open(c['tesscontrol_shader']) as f:
|
||||||
tesc = f.read().splitlines()
|
tesc = f.read().splitlines()
|
||||||
parse_shader(sres, c, con, defs, tesc, False)
|
parse_shader(sres, c, con, defs, tesc, False)
|
||||||
|
|
||||||
if 'tesseval_shader' in c:
|
if 'tesseval_shader' in c:
|
||||||
if 'tesseval_shader_path' in c:
|
|
||||||
with open(c['tesseval_shader_path']) as f:
|
|
||||||
tese = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['tesseval_shader']) as f:
|
with open(c['tesseval_shader']) as f:
|
||||||
tese = f.read().splitlines()
|
tese = f.read().splitlines()
|
||||||
parse_shader(sres, c, con, defs, tese, False)
|
parse_shader(sres, c, con, defs, tese, False)
|
||||||
|
|
|
@ -21,54 +21,34 @@ def make(base_name, json_data, fp, defs):
|
||||||
shaders.append(shader)
|
shaders.append(shader)
|
||||||
|
|
||||||
shader['vert_name'] = c['vertex_shader'].split('.', 1)[0]
|
shader['vert_name'] = c['vertex_shader'].split('.', 1)[0]
|
||||||
if 'vertex_shader_path' in c:
|
|
||||||
with open(c['vertex_shader_path']) as f:
|
|
||||||
shader['vert'] = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['vertex_shader']) as f:
|
with open(c['vertex_shader']) as f:
|
||||||
shader['vert'] = f.read().splitlines()
|
shader['vert'] = f.read().splitlines()
|
||||||
|
|
||||||
shader['frag_name'] = c['fragment_shader'].split('.', 1)[0]
|
shader['frag_name'] = c['fragment_shader'].split('.', 1)[0]
|
||||||
if 'fragment_shader_path' in c:
|
|
||||||
with open(c['fragment_shader_path']) as f:
|
|
||||||
shader['frag'] = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['fragment_shader']) as f:
|
with open(c['fragment_shader']) as f:
|
||||||
shader['frag'] = f.read().splitlines()
|
shader['frag'] = f.read().splitlines()
|
||||||
|
|
||||||
if 'geometry_shader' in c:
|
if 'geometry_shader' in c:
|
||||||
shader['geom_name'] = c['geometry_shader'].split('.', 1)[0]
|
shader['geom_name'] = c['geometry_shader'].split('.', 1)[0]
|
||||||
if 'geometry_shader_path' in c:
|
|
||||||
with open(c['geometry_shader_path']) as f:
|
|
||||||
shader['geom'] = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['geometry_shader']) as f:
|
with open(c['geometry_shader']) as f:
|
||||||
shader['geom'] = f.read().splitlines()
|
shader['geom'] = f.read().splitlines()
|
||||||
|
|
||||||
if 'tesscontrol_shader' in c:
|
if 'tesscontrol_shader' in c:
|
||||||
shader['tesc_name'] = c['tesscontrol_shader'].split('.', 1)[0]
|
shader['tesc_name'] = c['tesscontrol_shader'].split('.', 1)[0]
|
||||||
if 'tesscontrol_shader_path' in c:
|
|
||||||
with open(c['tesscontrol_shader_path']) as f:
|
|
||||||
shader['tesc'] = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['tesscontrol_shader']) as f:
|
with open(c['tesscontrol_shader']) as f:
|
||||||
shader['tesc'] = f.read().splitlines()
|
shader['tesc'] = f.read().splitlines()
|
||||||
|
|
||||||
if 'tesseval_shader' in c:
|
if 'tesseval_shader' in c:
|
||||||
shader['tese_name'] = c['tesseval_shader'].split('.', 1)[0]
|
shader['tese_name'] = c['tesseval_shader'].split('.', 1)[0]
|
||||||
if 'tesseval_shader_path' in c:
|
|
||||||
with open(c['tesseval_shader_path']) as f:
|
|
||||||
shader['tese'] = f.read().splitlines()
|
|
||||||
else:
|
|
||||||
with open(c['tesseval_shader']) as f:
|
with open(c['tesseval_shader']) as f:
|
||||||
shader['tese'] = f.read().splitlines()
|
shader['tese'] = f.read().splitlines()
|
||||||
|
|
||||||
for shader in shaders:
|
for shader in shaders:
|
||||||
write_variant(path, shader['vert_name'] + '.vert.glsl', defs, shader['vert'])
|
write_variant(path, c['vertex_shader'].split('/')[-1], defs, shader['vert'])
|
||||||
write_variant(path, shader['frag_name'] + '.frag.glsl', defs, shader['frag'])
|
write_variant(path, c['fragment_shader'].split('/')[-1], defs, shader['frag'])
|
||||||
if 'geom' in shader:
|
if 'geom' in shader:
|
||||||
write_variant(path, shader['geom_name'] + '.geom.glsl', defs, shader['geom'])
|
write_variant(path, c['geometry_shader'].split('/')[-1], defs, shader['geom'])
|
||||||
if 'tesc' in shader:
|
if 'tesc' in shader:
|
||||||
write_variant(path, shader['tesc_name'] + '.tesc.glsl', defs, shader['tesc'])
|
write_variant(path, c['tesscontrol_shader'].split('/')[-1], defs, shader['tesc'])
|
||||||
if 'tese' in shader:
|
if 'tese' in shader:
|
||||||
write_variant(path, shader['tese_name'] + '.tese.glsl', defs, shader['tese'])
|
write_variant(path, c['tesseval_shader'].split('/')[-1], defs, shader['tese'])
|
||||||
|
|
|
@ -37,14 +37,13 @@ def compile_shader_pass(res, raw_shaders_path, shader_name, defs):
|
||||||
|
|
||||||
# Open json file
|
# Open json file
|
||||||
json_name = shader_name + '.json'
|
json_name = shader_name + '.json'
|
||||||
base_name = json_name.split('.', 1)[0]
|
|
||||||
with open(json_name) as f:
|
with open(json_name) as f:
|
||||||
json_file = f.read()
|
json_file = f.read()
|
||||||
json_data = json.loads(json_file)
|
json_data = json.loads(json_file)
|
||||||
|
|
||||||
fp = arm.utils.get_fp_build()
|
fp = arm.utils.get_fp_build()
|
||||||
arm.lib.make_datas.make(res, base_name, json_data, fp, defs)
|
arm.lib.make_datas.make(res, shader_name, json_data, fp, defs)
|
||||||
arm.lib.make_variants.make(base_name, json_data, fp, defs)
|
arm.lib.make_variants.make(shader_name, json_data, fp, defs)
|
||||||
|
|
||||||
def remove_readonly(func, path, excinfo):
|
def remove_readonly(func, path, excinfo):
|
||||||
os.chmod(path, stat.S_IWRITE)
|
os.chmod(path, stat.S_IWRITE)
|
||||||
|
@ -145,6 +144,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
|
||||||
print('Shader flags: ' + str(defs))
|
print('Shader flags: ' + str(defs))
|
||||||
|
|
||||||
# Write referenced shader passes
|
# Write referenced shader passes
|
||||||
|
path = build_dir + '/compiled/Shaders'
|
||||||
if not os.path.isfile(build_dir + '/compiled/Shaders/shader_datas.arm') or state.last_world_defs != wrd.world_defs:
|
if not os.path.isfile(build_dir + '/compiled/Shaders/shader_datas.arm') or state.last_world_defs != wrd.world_defs:
|
||||||
path = build_dir + '/compiled/Shaders'
|
path = build_dir + '/compiled/Shaders'
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
|
@ -155,6 +155,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
|
||||||
# Ensure shader pass source exists
|
# Ensure shader pass source exists
|
||||||
if not os.path.exists(raw_shaders_path + '/' + ref):
|
if not os.path.exists(raw_shaders_path + '/' + ref):
|
||||||
continue
|
continue
|
||||||
|
assets.shader_passes_assets[ref] = []
|
||||||
if ref.startswith('compositor_pass'):
|
if ref.startswith('compositor_pass'):
|
||||||
cdefs = arm.utils.def_strings_to_array(wrd.compo_defs)
|
cdefs = arm.utils.def_strings_to_array(wrd.compo_defs)
|
||||||
compile_shader_pass(res, raw_shaders_path, ref, defs + cdefs)
|
compile_shader_pass(res, raw_shaders_path, ref, defs + cdefs)
|
||||||
|
@ -163,6 +164,9 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
|
||||||
else:
|
else:
|
||||||
compile_shader_pass(res, raw_shaders_path, ref, defs)
|
compile_shader_pass(res, raw_shaders_path, ref, defs)
|
||||||
arm.utils.write_arm(path + '/shader_datas.arm', res)
|
arm.utils.write_arm(path + '/shader_datas.arm', res)
|
||||||
|
for ref in assets.shader_passes:
|
||||||
|
for s in assets.shader_passes_assets[ref]:
|
||||||
|
assets.add_shader(path + '/' + s + '.glsl')
|
||||||
state.last_world_defs = wrd.world_defs
|
state.last_world_defs = wrd.world_defs
|
||||||
|
|
||||||
# Reset path
|
# Reset path
|
||||||
|
|
|
@ -6,6 +6,7 @@ import arm.material.make_skin as make_skin
|
||||||
import arm.material.make_tess as make_tess
|
import arm.material.make_tess as make_tess
|
||||||
import arm.material.make_particle as make_particle
|
import arm.material.make_particle as make_particle
|
||||||
import arm.material.make_mesh as make_mesh
|
import arm.material.make_mesh as make_mesh
|
||||||
|
import arm.assets as assets
|
||||||
import arm.utils
|
import arm.utils
|
||||||
|
|
||||||
def make(context_id, rpasses, shadowmap=False):
|
def make(context_id, rpasses, shadowmap=False):
|
||||||
|
@ -24,9 +25,6 @@ def make(context_id, rpasses, shadowmap=False):
|
||||||
tesc = None
|
tesc = None
|
||||||
tese = None
|
tese = None
|
||||||
|
|
||||||
gapi = arm.utils.get_gapi()
|
|
||||||
if gapi == 'direct3d9':
|
|
||||||
frag.add_out('vec4 fragColor') # Definition requred for d3d9 - pixel shader must minimally write all four components of COLOR0
|
|
||||||
vert.write_main_header('vec4 spos = vec4(pos, 1.0);')
|
vert.write_main_header('vec4 spos = vec4(pos, 1.0);')
|
||||||
|
|
||||||
parse_opacity = 'translucent' in rpasses or mat_state.material.arm_discard
|
parse_opacity = 'translucent' in rpasses or mat_state.material.arm_discard
|
||||||
|
@ -148,6 +146,7 @@ def make(context_id, rpasses, shadowmap=False):
|
||||||
con_depth.add_elem('tang', 4)
|
con_depth.add_elem('tang', 4)
|
||||||
|
|
||||||
# TODO: pass vbuf with proper struct
|
# TODO: pass vbuf with proper struct
|
||||||
|
gapi = arm.utils.get_gapi()
|
||||||
if gapi.startswith('direct3d') and bpy.data.worlds['Arm'].arm_deinterleaved_buffers == False:
|
if gapi.startswith('direct3d') and bpy.data.worlds['Arm'].arm_deinterleaved_buffers == False:
|
||||||
vert.write('vec3 t1 = nor; // TODO: Temp for d3d')
|
vert.write('vec3 t1 = nor; // TODO: Temp for d3d')
|
||||||
if con_depth.is_elem('tex'):
|
if con_depth.is_elem('tex'):
|
||||||
|
@ -157,9 +156,9 @@ def make(context_id, rpasses, shadowmap=False):
|
||||||
opac = mat_state.material.arm_discard_opacity_shadows
|
opac = mat_state.material.arm_discard_opacity_shadows
|
||||||
frag.write('if (opacity < {0}) discard;'.format(opac))
|
frag.write('if (opacity < {0}) discard;'.format(opac))
|
||||||
|
|
||||||
# frag.write('fragColor = vec4(0.0);')
|
assets.vs_equal(con_depth, assets.shader_cons['depth_vert'])
|
||||||
|
assets.fs_equal(con_depth, assets.shader_cons['depth_frag'])
|
||||||
|
|
||||||
make_mesh.make_finalize(con_depth)
|
make_mesh.make_finalize(con_depth)
|
||||||
|
|
||||||
return con_depth
|
return con_depth
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import bpy
|
import bpy
|
||||||
import arm.make_state as state
|
import arm.assets as assets
|
||||||
import arm.material.mat_state as mat_state
|
import arm.material.mat_state as mat_state
|
||||||
import arm.material.mat_utils as mat_utils
|
import arm.material.mat_utils as mat_utils
|
||||||
import arm.material.cycles as cycles
|
import arm.material.cycles as cycles
|
||||||
|
@ -49,6 +49,8 @@ def make(context_id):
|
||||||
elif rid == 'Deferred Plus':
|
elif rid == 'Deferred Plus':
|
||||||
make_deferred_plus(con_mesh)
|
make_deferred_plus(con_mesh)
|
||||||
|
|
||||||
|
assets.vs_equal(con_mesh, assets.shader_cons['mesh_vert'])
|
||||||
|
|
||||||
make_finalize(con_mesh)
|
make_finalize(con_mesh)
|
||||||
|
|
||||||
return con_mesh
|
return con_mesh
|
||||||
|
|
|
@ -21,7 +21,7 @@ def make_rect(con_rect):
|
||||||
vert = con_rect.make_vert()
|
vert = con_rect.make_vert()
|
||||||
frag = con_rect.make_frag()
|
frag = con_rect.make_frag()
|
||||||
|
|
||||||
vert.vertex_structure_as_vsinput = False # Rect structure is used instead
|
vert.vstruct_as_vsin = False # Rect structure is used instead
|
||||||
|
|
||||||
vert.add_in('vec2 pos')
|
vert.add_in('vec2 pos')
|
||||||
vert.add_out('vec2 texCoordRect')
|
vert.add_out('vec2 texCoordRect')
|
||||||
|
|
|
@ -105,7 +105,7 @@ def write_shaders(rel_path, con, rpass, matname):
|
||||||
write_shader(rel_path, con.tese, 'tese', rpass, matname, keep_cache=keep_cache)
|
write_shader(rel_path, con.tese, 'tese', rpass, matname, keep_cache=keep_cache)
|
||||||
|
|
||||||
def write_shader(rel_path, shader, ext, rpass, matname, keep_cache=True):
|
def write_shader(rel_path, shader, ext, rpass, matname, keep_cache=True):
|
||||||
if shader == None:
|
if shader == None or shader.is_linked:
|
||||||
return
|
return
|
||||||
|
|
||||||
# TODO: blend context
|
# TODO: blend context
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import bpy
|
import bpy
|
||||||
import arm.utils
|
import arm.utils
|
||||||
|
import arm.assets as assets
|
||||||
import arm.material.cycles as cycles
|
import arm.material.cycles as cycles
|
||||||
import arm.material.mat_state as mat_state
|
import arm.material.mat_state as mat_state
|
||||||
import arm.material.mat_utils as mat_utils
|
import arm.material.mat_utils as mat_utils
|
||||||
|
@ -8,9 +9,15 @@ import arm.material.make_particle as make_particle
|
||||||
def make(context_id):
|
def make(context_id):
|
||||||
rpdat = arm.utils.get_rp()
|
rpdat = arm.utils.get_rp()
|
||||||
if rpdat.rp_gi == 'Voxel GI':
|
if rpdat.rp_gi == 'Voxel GI':
|
||||||
return make_gi(context_id)
|
con = make_gi(context_id)
|
||||||
else:
|
else:
|
||||||
return make_ao(context_id)
|
con = make_ao(context_id)
|
||||||
|
|
||||||
|
assets.vs_equal(con, assets.shader_cons['voxel_vert'])
|
||||||
|
assets.gs_equal(con, assets.shader_cons['voxel_frag'])
|
||||||
|
assets.fs_equal(con, assets.shader_cons['voxel_geom'])
|
||||||
|
|
||||||
|
return con
|
||||||
|
|
||||||
def make_gi(context_id):
|
def make_gi(context_id):
|
||||||
con_voxel = mat_state.data.add_context({ 'name': context_id, 'depth_write': False, 'compare_mode': 'always', 'cull_mode': 'none', 'color_write_red': False, 'color_write_green': False, 'color_write_blue': False, 'color_write_alpha': False, 'conservative_raster': True })
|
con_voxel = mat_state.data.add_context({ 'name': context_id, 'depth_write': False, 'compare_mode': 'always', 'cull_mode': 'none', 'color_write_red': False, 'color_write_green': False, 'color_write_blue': False, 'color_write_alpha': False, 'conservative_raster': True })
|
||||||
|
|
|
@ -18,9 +18,10 @@ class Shader:
|
||||||
self.write_pre = False
|
self.write_pre = False
|
||||||
self.write_pre_header = 0
|
self.write_pre_header = 0
|
||||||
self.tab = 1
|
self.tab = 1
|
||||||
self.vertex_structure_as_vsinput = True
|
self.vstruct_as_vsin = True
|
||||||
self.lock = False
|
self.lock = False
|
||||||
self.geom_passthrough = False
|
self.geom_passthrough = False
|
||||||
|
self.is_linked = False # Use already generated shader
|
||||||
|
|
||||||
def add_include(self, s):
|
def add_include(self, s):
|
||||||
self.includes.append(s)
|
self.includes.append(s)
|
||||||
|
@ -82,6 +83,20 @@ class Shader:
|
||||||
def write_main_header(self, s):
|
def write_main_header(self, s):
|
||||||
self.main_header += s + '\n'
|
self.main_header += s + '\n'
|
||||||
|
|
||||||
|
def is_equal(self, sh):
|
||||||
|
self.vstruct_to_vsin()
|
||||||
|
return self.ins == sh.ins and \
|
||||||
|
self.main == sh.main and \
|
||||||
|
self.main_header == sh.main_header and \
|
||||||
|
self.main_pre == sh.main_pre
|
||||||
|
|
||||||
|
def vstruct_to_vsin(self):
|
||||||
|
if self.shader_type != 'vert' or self.ins != [] or not self.vstruct_as_vsin: # Vertex structure as vertex shader input
|
||||||
|
return
|
||||||
|
vs = self.context.data['vertex_structure']
|
||||||
|
for e in vs:
|
||||||
|
self.add_in('vec' + str(e['size']) + ' ' + e['name'])
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
s = '#version 450\n'
|
s = '#version 450\n'
|
||||||
|
|
||||||
|
@ -94,10 +109,8 @@ class Shader:
|
||||||
in_ext = ''
|
in_ext = ''
|
||||||
out_ext = ''
|
out_ext = ''
|
||||||
|
|
||||||
if self.shader_type == 'vert' and self.vertex_structure_as_vsinput: # Vertex structure as vertex shader input
|
if self.shader_type == 'vert':
|
||||||
vs = self.context.data['vertex_structure']
|
self.vstruct_to_vsin()
|
||||||
for e in vs:
|
|
||||||
self.add_in('vec' + str(e['size']) + ' ' + e['name'])
|
|
||||||
|
|
||||||
elif self.shader_type == 'tesc':
|
elif self.shader_type == 'tesc':
|
||||||
in_ext = '[]'
|
in_ext = '[]'
|
||||||
|
|
|
@ -80,7 +80,6 @@ class ArmExporterListItem(bpy.types.PropertyGroup):
|
||||||
items = [('opengl', 'Auto', 'opengl'),
|
items = [('opengl', 'Auto', 'opengl'),
|
||||||
('opengl', 'OpenGL', 'opengl'),
|
('opengl', 'OpenGL', 'opengl'),
|
||||||
('vulkan', 'Vulkan', 'vulkan'),
|
('vulkan', 'Vulkan', 'vulkan'),
|
||||||
('direct3d9', 'Direct3D9', 'direct3d9'),
|
|
||||||
('direct3d11', 'Direct3D11', 'direct3d11'),
|
('direct3d11', 'Direct3D11', 'direct3d11'),
|
||||||
('direct3d12', 'Direct3D12', 'direct3d12')],
|
('direct3d12', 'Direct3D12', 'direct3d12')],
|
||||||
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_win)
|
name="Graphics API", default='opengl', description='Based on currently selected target', update=update_gapi_win)
|
||||||
|
|
Loading…
Reference in a new issue