Workaround MoltenVK error found in TAA implementation

This commit is contained in:
jfons 2022-06-09 16:32:24 +02:00
parent a2c016e997
commit 36382ab7eb

View file

@ -384,14 +384,13 @@ void main() {
instance_index_interp = instance_index;
SceneData scene_data = scene_data_block.data;
mat4 model_matrix = instances.data[instance_index].transform;
#if defined(MOTION_VECTORS)
vertex_shader(instance_index, is_multimesh, scene_data_block.prev_data, instances.data[instance_index].prev_transform, prev_screen_position);
vertex_shader(instance_index, is_multimesh, scene_data, model_matrix, screen_position);
vertex_shader(instance_index, is_multimesh, scene_data_block.data, model_matrix, screen_position);
#else
vec4 screen_position;
vertex_shader(instance_index, is_multimesh, scene_data, model_matrix, screen_position);
vertex_shader(instance_index, is_multimesh, scene_data_block.data, model_matrix, screen_position);
#endif
}
@ -630,15 +629,7 @@ uint cluster_get_range_clip_mask(uint i, uint z_min, uint z_max) {
#endif //!MODE_RENDER DEPTH
void main() {
#ifdef MODE_DUAL_PARABOLOID
if (dp_clip > 0.0)
discard;
#endif
SceneData scene_data = scene_data_block.data;
SceneData prev_scene_data = scene_data_block.prev_data;
void fragment_shader(in SceneData scene_data) {
uint instance_index = instance_index_interp;
//lay out everything, whatever is unused is optimized away anyway
@ -2048,7 +2039,7 @@ void main() {
#endif //MODE_RENDER_DEPTH
#ifdef MOTION_VECTORS
vec2 position_clip = (screen_position.xy / screen_position.w) - scene_data.taa_jitter;
vec2 prev_position_clip = (prev_screen_position.xy / prev_screen_position.w) - prev_scene_data.taa_jitter;
vec2 prev_position_clip = (prev_screen_position.xy / prev_screen_position.w) - scene_data_block.prev_data.taa_jitter;
vec2 position_uv = position_clip * vec2(0.5, 0.5);
vec2 prev_position_uv = prev_position_clip * vec2(0.5, 0.5);
@ -2056,3 +2047,13 @@ void main() {
motion_vector = position_uv - prev_position_uv;
#endif
}
void main() {
#ifdef MODE_DUAL_PARABOLOID
if (dp_clip > 0.0)
discard;
#endif
fragment_shader(scene_data_block.data);
}