Fix #106672: MacOS/OpenGL doesn't draw anything Eevee related. #106887
|
@ -25,49 +25,49 @@ typedef struct CommonUniformBlock CommonUniformBlock;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct CommonUniformBlock {
|
struct CommonUniformBlock {
|
||||||
mat4 _pastViewProjectionMatrix;
|
mat4 pastViewProjectionMatrix;
|
||||||
vec4 _hizUvScale; /* To correct mip level texel misalignment */
|
vec4 hizUvScale; /* To correct mip level texel misalignment */
|
||||||
/* Ambient Occlusion */
|
/* Ambient Occlusion */
|
||||||
vec4 _aoParameters[2];
|
vec4 aoParameters[2];
|
||||||
/* Volumetric */
|
/* Volumetric */
|
||||||
ivec4 _volTexSize;
|
ivec4 volTexSize;
|
||||||
vec4 _volDepthParameters; /* Parameters to the volume Z equation */
|
vec4 volDepthParameters; /* Parameters to the volume Z equation */
|
||||||
vec4 _volInvTexSize;
|
vec4 volInvTexSize;
|
||||||
vec4 _volJitter;
|
vec4 volJitter;
|
||||||
vec4 _volCoordScale; /* To convert volume uvs to screen uvs */
|
vec4 volCoordScale; /* To convert volume uvs to screen uvs */
|
||||||
float _volHistoryAlpha;
|
float volHistoryAlpha;
|
||||||
float _volShadowSteps;
|
float volShadowSteps;
|
||||||
bool _volUseLights;
|
bool volUseLights;
|
||||||
bool _volUseSoftShadows;
|
bool volUseSoftShadows;
|
||||||
/* Screen Space Reflections */
|
/* Screen Space Reflections */
|
||||||
vec4 _ssrParameters;
|
vec4 ssrParameters;
|
||||||
float _ssrBorderFac;
|
float ssrBorderFac;
|
||||||
float _ssrMaxRoughness;
|
float ssrMaxRoughness;
|
||||||
float _ssrFireflyFac;
|
float ssrFireflyFac;
|
||||||
float _ssrBrdfBias;
|
float ssrBrdfBias;
|
||||||
bool _ssrToggle;
|
bool ssrToggle;
|
||||||
bool _ssrefractToggle;
|
bool ssrefractToggle;
|
||||||
/* SubSurface Scattering */
|
/* SubSurface Scattering */
|
||||||
float _sssJitterThreshold;
|
float sssJitterThreshold;
|
||||||
bool _sssToggle;
|
bool sssToggle;
|
||||||
/* Specular */
|
/* Specular */
|
||||||
bool _specToggle;
|
bool specToggle;
|
||||||
/* Lights */
|
/* Lights */
|
||||||
int _laNumLight;
|
int laNumLight;
|
||||||
/* Probes */
|
/* Probes */
|
||||||
int _prbNumPlanar;
|
int prbNumPlanar;
|
||||||
int _prbNumRenderCube;
|
int prbNumRenderCube;
|
||||||
int _prbNumRenderGrid;
|
int prbNumRenderGrid;
|
||||||
int _prbIrradianceVisSize;
|
int prbIrradianceVisSize;
|
||||||
float _prbIrradianceSmooth;
|
float prbIrradianceSmooth;
|
||||||
float _prbLodCubeMax;
|
float prbLodCubeMax;
|
||||||
/* Misc */
|
/* Misc */
|
||||||
int _rayType;
|
int rayType;
|
||||||
float _rayDepth;
|
float rayDepth;
|
||||||
float _alphaHashOffset;
|
float alphaHashOffset;
|
||||||
float _alphaHashScale;
|
float alphaHashScale;
|
||||||
vec4 _cameraUvScaleBias;
|
vec4 cameraUvScaleBias;
|
||||||
vec4 _planarClipPlane;
|
vec4 planarClipPlane;
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(CommonUniformBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(CommonUniformBlock, 16)
|
||||||
|
|
||||||
|
@ -102,17 +102,17 @@ struct GridData {
|
||||||
BLI_STATIC_ASSERT_ALIGN(GridData, 16)
|
BLI_STATIC_ASSERT_ALIGN(GridData, 16)
|
||||||
|
|
||||||
struct ProbeBlock {
|
struct ProbeBlock {
|
||||||
CubeData _probes_data[MAX_PROBE];
|
CubeData probes_data[MAX_PROBE];
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(ProbeBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(ProbeBlock, 16)
|
||||||
|
|
||||||
struct GridBlock {
|
struct GridBlock {
|
||||||
GridData _grids_data[MAX_GRID];
|
GridData grids_data[MAX_GRID];
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(GridBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(GridBlock, 16)
|
||||||
|
|
||||||
struct PlanarBlock {
|
struct PlanarBlock {
|
||||||
PlanarData _planars_data[MAX_PLANAR];
|
PlanarData planars_data[MAX_PLANAR];
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(PlanarBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(PlanarBlock, 16)
|
||||||
|
|
||||||
|
@ -141,9 +141,9 @@ struct ShadowCascadeData {
|
||||||
BLI_STATIC_ASSERT_ALIGN(ShadowCascadeData, 16)
|
BLI_STATIC_ASSERT_ALIGN(ShadowCascadeData, 16)
|
||||||
|
|
||||||
struct ShadowBlock {
|
struct ShadowBlock {
|
||||||
ShadowData _shadows_data[MAX_SHADOW];
|
ShadowData shadows_data[MAX_SHADOW];
|
||||||
ShadowCubeData _shadows_cube_data[MAX_SHADOW_CUBE];
|
ShadowCubeData shadows_cube_data[MAX_SHADOW_CUBE];
|
||||||
ShadowCascadeData _shadows_cascade_data[MAX_SHADOW_CASCADE];
|
ShadowCascadeData shadows_cascade_data[MAX_SHADOW_CASCADE];
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(ShadowBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(ShadowBlock, 16)
|
||||||
|
|
||||||
|
@ -159,20 +159,20 @@ struct LightData {
|
||||||
BLI_STATIC_ASSERT_ALIGN(LightData, 16)
|
BLI_STATIC_ASSERT_ALIGN(LightData, 16)
|
||||||
|
|
||||||
struct LightBlock {
|
struct LightBlock {
|
||||||
LightData _lights_data[MAX_LIGHT];
|
LightData lights_data[MAX_LIGHT];
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(LightBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(LightBlock, 16)
|
||||||
|
|
||||||
struct RenderpassBlock {
|
struct RenderpassBlock {
|
||||||
bool _renderPassDiffuse;
|
bool renderPassDiffuse;
|
||||||
bool _renderPassDiffuseLight;
|
bool renderPassDiffuseLight;
|
||||||
bool _renderPassGlossy;
|
bool renderPassGlossy;
|
||||||
bool _renderPassGlossyLight;
|
bool renderPassGlossyLight;
|
||||||
bool _renderPassEmit;
|
bool renderPassEmit;
|
||||||
bool _renderPassSSSColor;
|
bool renderPassSSSColor;
|
||||||
bool _renderPassEnvironment;
|
bool renderPassEnvironment;
|
||||||
bool _renderPassAOV;
|
bool renderPassAOV;
|
||||||
uint _renderPassAOVActive;
|
uint renderPassAOVActive;
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(RenderpassBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(RenderpassBlock, 16)
|
||||||
|
|
||||||
|
@ -182,10 +182,10 @@ BLI_STATIC_ASSERT_ALIGN(RenderpassBlock, 16)
|
||||||
#define SSS_LUT_BIAS (0.5 / float(SSS_LUT_SIZE))
|
#define SSS_LUT_BIAS (0.5 / float(SSS_LUT_SIZE))
|
||||||
|
|
||||||
struct SSSProfileBlock {
|
struct SSSProfileBlock {
|
||||||
vec4 _sss_kernel[MAX_SSS_SAMPLES];
|
vec4 sss_kernel[MAX_SSS_SAMPLES];
|
||||||
vec4 _radii_max_radius;
|
vec4 radii_max_radius;
|
||||||
float _avg_inv_radius;
|
float avg_inv_radius;
|
||||||
int _sss_samples;
|
int sss_samples;
|
||||||
};
|
};
|
||||||
BLI_STATIC_ASSERT_ALIGN(SSSProfileBlock, 16)
|
BLI_STATIC_ASSERT_ALIGN(SSSProfileBlock, 16)
|
||||||
|
|
||||||
|
@ -194,75 +194,75 @@ BLI_STATIC_ASSERT_ALIGN(SSSProfileBlock, 16)
|
||||||
# if defined(USE_GPU_SHADER_CREATE_INFO)
|
# if defined(USE_GPU_SHADER_CREATE_INFO)
|
||||||
|
|
||||||
/* Keep compatibility_with old global scope syntax. */
|
/* Keep compatibility_with old global scope syntax. */
|
||||||
# define pastViewProjectionMatrix common_block._pastViewProjectionMatrix
|
# define pastViewProjectionMatrix common_block.pastViewProjectionMatrix
|
||||||
# define hizUvScale common_block._hizUvScale
|
# define hizUvScale common_block.hizUvScale
|
||||||
# define aoParameters common_block._aoParameters
|
# define aoParameters common_block.aoParameters
|
||||||
# define volTexSize common_block._volTexSize
|
# define volTexSize common_block.volTexSize
|
||||||
# define volDepthParameters common_block._volDepthParameters
|
# define volDepthParameters common_block.volDepthParameters
|
||||||
# define volInvTexSize common_block._volInvTexSize
|
# define volInvTexSize common_block.volInvTexSize
|
||||||
# define volJitter common_block._volJitter
|
# define volJitter common_block.volJitter
|
||||||
# define volCoordScale common_block._volCoordScale
|
# define volCoordScale common_block.volCoordScale
|
||||||
# define volHistoryAlpha common_block._volHistoryAlpha
|
# define volHistoryAlpha common_block.volHistoryAlpha
|
||||||
# define volShadowSteps common_block._volShadowSteps
|
# define volShadowSteps common_block.volShadowSteps
|
||||||
# define volUseLights common_block._volUseLights
|
# define volUseLights common_block.volUseLights
|
||||||
# define volUseSoftShadows common_block._volUseSoftShadows
|
# define volUseSoftShadows common_block.volUseSoftShadows
|
||||||
# define ssrParameters common_block._ssrParameters
|
# define ssrParameters common_block.ssrParameters
|
||||||
# define ssrBorderFac common_block._ssrBorderFac
|
# define ssrBorderFac common_block.ssrBorderFac
|
||||||
# define ssrMaxRoughness common_block._ssrMaxRoughness
|
# define ssrMaxRoughness common_block.ssrMaxRoughness
|
||||||
# define ssrFireflyFac common_block._ssrFireflyFac
|
# define ssrFireflyFac common_block.ssrFireflyFac
|
||||||
# define ssrBrdfBias common_block._ssrBrdfBias
|
# define ssrBrdfBias common_block.ssrBrdfBias
|
||||||
# define ssrToggle common_block._ssrToggle
|
# define ssrToggle common_block.ssrToggle
|
||||||
# define ssrefractToggle common_block._ssrefractToggle
|
# define ssrefractToggle common_block.ssrefractToggle
|
||||||
# define sssJitterThreshold common_block._sssJitterThreshold
|
# define sssJitterThreshold common_block.sssJitterThreshold
|
||||||
# define sssToggle common_block._sssToggle
|
# define sssToggle common_block.sssToggle
|
||||||
# define specToggle common_block._specToggle
|
# define specToggle common_block.specToggle
|
||||||
# define laNumLight common_block._laNumLight
|
# define laNumLight common_block.laNumLight
|
||||||
# define prbNumPlanar common_block._prbNumPlanar
|
# define prbNumPlanar common_block.prbNumPlanar
|
||||||
# define prbNumRenderCube common_block._prbNumRenderCube
|
# define prbNumRenderCube common_block.prbNumRenderCube
|
||||||
# define prbNumRenderGrid common_block._prbNumRenderGrid
|
# define prbNumRenderGrid common_block.prbNumRenderGrid
|
||||||
# define prbIrradianceVisSize common_block._prbIrradianceVisSize
|
# define prbIrradianceVisSize common_block.prbIrradianceVisSize
|
||||||
# define prbIrradianceSmooth common_block._prbIrradianceSmooth
|
# define prbIrradianceSmooth common_block.prbIrradianceSmooth
|
||||||
# define prbLodCubeMax common_block._prbLodCubeMax
|
# define prbLodCubeMax common_block.prbLodCubeMax
|
||||||
# define rayType common_block._rayType
|
# define rayType common_block.rayType
|
||||||
# define rayDepth common_block._rayDepth
|
# define rayDepth common_block.rayDepth
|
||||||
# define alphaHashOffset common_block._alphaHashOffset
|
# define alphaHashOffset common_block.alphaHashOffset
|
||||||
# define alphaHashScale common_block._alphaHashScale
|
# define alphaHashScale common_block.alphaHashScale
|
||||||
# define cameraUvScaleBias common_block._cameraUvScaleBias
|
# define cameraUvScaleBias common_block.cameraUvScaleBias
|
||||||
# define planarClipPlane common_block._planarClipPlane
|
# define planarClipPlane common_block.planarClipPlane
|
||||||
|
|
||||||
/* ProbeBlock */
|
/* ProbeBlock */
|
||||||
# define probes_data probe_block._probes_data
|
# define probes_data probe_block.probes_data
|
||||||
|
|
||||||
/* GridBlock */
|
/* GridBlock */
|
||||||
# define grids_data grid_block._grids_data
|
# define grids_data grid_block.grids_data
|
||||||
|
|
||||||
/* PlanarBlock */
|
/* PlanarBlock */
|
||||||
# define planars_data planar_block._planars_data
|
# define planars_data planar_block.planars_data
|
||||||
|
|
||||||
/* ShadowBlock */
|
/* ShadowBlock */
|
||||||
# define shadows_data shadow_block._shadows_data
|
# define shadows_data shadow_block.shadows_data
|
||||||
# define shadows_cube_data shadow_block._shadows_cube_data
|
# define shadows_cube_data shadow_block.shadows_cube_data
|
||||||
# define shadows_cascade_data shadow_block._shadows_cascade_data
|
# define shadows_cascade_data shadow_block.shadows_cascade_data
|
||||||
|
|
||||||
/* LightBlock */
|
/* LightBlock */
|
||||||
# define lights_data light_block._lights_data
|
# define lights_data light_block.lights_data
|
||||||
|
|
||||||
/* RenderpassBlock */
|
/* RenderpassBlock */
|
||||||
# define renderPassDiffuse renderpass_block._renderPassDiffuse
|
# define renderPassDiffuse renderpass_block.renderPassDiffuse
|
||||||
# define renderPassDiffuseLight renderpass_block._renderPassDiffuseLight
|
# define renderPassDiffuseLight renderpass_block.renderPassDiffuseLight
|
||||||
# define renderPassGlossy renderpass_block._renderPassGlossy
|
# define renderPassGlossy renderpass_block.renderPassGlossy
|
||||||
# define renderPassGlossyLight renderpass_block._renderPassGlossyLight
|
# define renderPassGlossyLight renderpass_block.renderPassGlossyLight
|
||||||
# define renderPassEmit renderpass_block._renderPassEmit
|
# define renderPassEmit renderpass_block.renderPassEmit
|
||||||
# define renderPassSSSColor renderpass_block._renderPassSSSColor
|
# define renderPassSSSColor renderpass_block.renderPassSSSColor
|
||||||
# define renderPassEnvironment renderpass_block._renderPassEnvironment
|
# define renderPassEnvironment renderpass_block.renderPassEnvironment
|
||||||
# define renderPassAOV renderpass_block._renderPassAOV
|
# define renderPassAOV renderpass_block.renderPassAOV
|
||||||
# define renderPassAOVActive renderpass_block._renderPassAOVActive
|
# define renderPassAOVActive renderpass_block.renderPassAOVActive
|
||||||
|
|
||||||
/* SSSProfileBlock */
|
/* SSSProfileBlock */
|
||||||
# define sss_kernel sssProfile._sss_kernel
|
# define sss_kernel sssProfile.sss_kernel
|
||||||
# define radii_max_radius sssProfile._radii_max_radius
|
# define radii_max_radius sssProfile.radii_max_radius
|
||||||
# define avg_inv_radius sssProfile._avg_inv_radius
|
# define avg_inv_radius sssProfile.avg_inv_radius
|
||||||
# define sss_samples sssProfile._sss_samples
|
# define sss_samples sssProfile.sss_samples
|
||||||
|
|
||||||
# endif /* USE_GPU_SHADER_CREATE_INFO */
|
# endif /* USE_GPU_SHADER_CREATE_INFO */
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ uniform usamplerBuffer hairStrandSegBuffer; /* R16UI */
|
||||||
// uniform samplerBuffer hairColBuffer; /* RGBA16 linear color */
|
// uniform samplerBuffer hairColBuffer; /* RGBA16 linear color */
|
||||||
# else
|
# else
|
||||||
# ifndef DRW_HAIR_INFO
|
# ifndef DRW_HAIR_INFO
|
||||||
# error Ensure createInfo includes draw_hair for general use or eevee_legacy_hair_lib for EEVEE.
|
# error Ensure createInfo includes `draw_hair` for general use or `eevee_legacy_hair_lib` for EEVEE.
|
||||||
# endif
|
# endif
|
||||||
# endif /* !USE_GPU_SHADER_CREATE_INFO */
|
# endif /* !USE_GPU_SHADER_CREATE_INFO */
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ in vec3 nor;
|
||||||
# endif
|
# endif
|
||||||
# else
|
# else
|
||||||
# ifndef DRW_POINTCLOUD_INFO
|
# ifndef DRW_POINTCLOUD_INFO
|
||||||
# error Ensure createInfo includes draw_pointcloud.
|
# error Ensure createInfo includes `draw_pointcloud`.
|
||||||
# endif
|
# endif
|
||||||
# endif /* !USE_GPU_SHADER_CREATE_INFO */
|
# endif /* !USE_GPU_SHADER_CREATE_INFO */
|
||||||
|
|
||||||
|
|
|
@ -405,7 +405,7 @@ static void print_resource(std::ostream &os,
|
||||||
array_offset = res.uniformbuf.name.find_first_of("[");
|
array_offset = res.uniformbuf.name.find_first_of("[");
|
||||||
name_no_array = (array_offset == -1) ? res.uniformbuf.name :
|
name_no_array = (array_offset == -1) ? res.uniformbuf.name :
|
||||||
StringRef(res.uniformbuf.name.c_str(), array_offset);
|
StringRef(res.uniformbuf.name.c_str(), array_offset);
|
||||||
os << "uniform _" << name_no_array << " { " << res.uniformbuf.type_name << " "
|
os << "uniform " << name_no_array << " { " << res.uniformbuf.type_name << " _"
|
||||||
<< res.uniformbuf.name << "; };\n";
|
<< res.uniformbuf.name << "; };\n";
|
||||||
break;
|
break;
|
||||||
case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
|
case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
|
||||||
|
@ -413,13 +413,36 @@ static void print_resource(std::ostream &os,
|
||||||
name_no_array = (array_offset == -1) ? res.storagebuf.name :
|
name_no_array = (array_offset == -1) ? res.storagebuf.name :
|
||||||
StringRef(res.storagebuf.name.c_str(), array_offset);
|
StringRef(res.storagebuf.name.c_str(), array_offset);
|
||||||
print_qualifier(os, res.storagebuf.qualifiers);
|
print_qualifier(os, res.storagebuf.qualifiers);
|
||||||
os << "buffer _";
|
os << "buffer ";
|
||||||
os << name_no_array << " { " << res.storagebuf.type_name << " " << res.storagebuf.name
|
os << name_no_array << " { " << res.storagebuf.type_name << " _" << res.storagebuf.name
|
||||||
<< "; };\n";
|
<< "; };\n";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void print_resource_alias(std::ostream &os, const ShaderCreateInfo::Resource &res)
|
||||||
|
{
|
||||||
|
int64_t array_offset;
|
||||||
|
StringRef name_no_array;
|
||||||
|
|
||||||
|
switch (res.bind_type) {
|
||||||
|
case ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER:
|
||||||
|
array_offset = res.uniformbuf.name.find_first_of("[");
|
||||||
|
name_no_array = (array_offset == -1) ? res.uniformbuf.name :
|
||||||
|
StringRef(res.uniformbuf.name.c_str(), array_offset);
|
||||||
|
os << "#define " << name_no_array << " (_" << name_no_array << ")\n";
|
||||||
|
break;
|
||||||
|
case ShaderCreateInfo::Resource::BindType::STORAGE_BUFFER:
|
||||||
|
array_offset = res.storagebuf.name.find_first_of("[");
|
||||||
|
name_no_array = (array_offset == -1) ? res.storagebuf.name :
|
||||||
|
StringRef(res.storagebuf.name.c_str(), array_offset);
|
||||||
|
os << "#define " << name_no_array << " (_" << name_no_array << ")\n";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void print_interface(std::ostream &os,
|
static void print_interface(std::ostream &os,
|
||||||
const StringRefNull &prefix,
|
const StringRefNull &prefix,
|
||||||
const StageInterfaceInfo &iface,
|
const StageInterfaceInfo &iface,
|
||||||
|
@ -452,10 +475,16 @@ std::string GLShader::resources_declare(const ShaderCreateInfo &info) const
|
||||||
for (const ShaderCreateInfo::Resource &res : info.pass_resources_) {
|
for (const ShaderCreateInfo::Resource &res : info.pass_resources_) {
|
||||||
print_resource(ss, res, info.auto_resource_location_);
|
print_resource(ss, res, info.auto_resource_location_);
|
||||||
}
|
}
|
||||||
|
for (const ShaderCreateInfo::Resource &res : info.pass_resources_) {
|
||||||
|
print_resource_alias(ss, res);
|
||||||
|
}
|
||||||
ss << "\n/* Batch Resources. */\n";
|
ss << "\n/* Batch Resources. */\n";
|
||||||
for (const ShaderCreateInfo::Resource &res : info.batch_resources_) {
|
for (const ShaderCreateInfo::Resource &res : info.batch_resources_) {
|
||||||
print_resource(ss, res, info.auto_resource_location_);
|
print_resource(ss, res, info.auto_resource_location_);
|
||||||
}
|
}
|
||||||
|
for (const ShaderCreateInfo::Resource &res : info.batch_resources_) {
|
||||||
|
print_resource_alias(ss, res);
|
||||||
|
}
|
||||||
ss << "\n/* Push Constants. */\n";
|
ss << "\n/* Push Constants. */\n";
|
||||||
for (const ShaderCreateInfo::PushConst &uniform : info.push_constants_) {
|
for (const ShaderCreateInfo::PushConst &uniform : info.push_constants_) {
|
||||||
ss << "uniform " << to_string(uniform.type) << " " << uniform.name;
|
ss << "uniform " << to_string(uniform.type) << " " << uniform.name;
|
||||||
|
|
|
@ -469,8 +469,7 @@ GLShaderInterface::GLShaderInterface(GLuint program, const shader::ShaderCreateI
|
||||||
if (res.bind_type == ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER) {
|
if (res.bind_type == ShaderCreateInfo::Resource::BindType::UNIFORM_BUFFER) {
|
||||||
copy_input_name(input, res.uniformbuf.name, name_buffer_, name_buffer_offset);
|
copy_input_name(input, res.uniformbuf.name, name_buffer_, name_buffer_offset);
|
||||||
if (true || !GLContext::explicit_location_support) {
|
if (true || !GLContext::explicit_location_support) {
|
||||||
std::string prefixed_name = "_" + res.uniformbuf.name;
|
input->location = glGetUniformBlockIndex(program, name_buffer_ + input->name_offset);
|
||||||
input->location = glGetUniformBlockIndex(program, prefixed_name.c_str());
|
|
||||||
glUniformBlockBinding(program, input->location, res.slot);
|
glUniformBlockBinding(program, input->location, res.slot);
|
||||||
}
|
}
|
||||||
input->binding = res.slot;
|
input->binding = res.slot;
|
||||||
|
|
Loading…
Reference in New Issue