Beispiel #1
0
static void
AL_InitUnderwaterFilter()
{
#if defined (__APPLE__)
	return;
#else
	/* Generate a filter */
	qalGenFilters(1, &underwaterFilter);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Couldn't generate an OpenAL filter!\n");
		return;
	}

	/* Low pass filter for underwater effect */
	qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Low pass filter is not supported!\n");
		return;
	}

	/* The effect */
	qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, 1.5);
	qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, 0.25);
#endif
}
Beispiel #2
0
/*
 * Set up the underwater filter
 */
static void
AL_InitUnderwaterFilter()
{
    underwaterFilter = 0;

    if (!(qalGenFilters && qalFilteri && qalFilterf && qalDeleteFilters))
        return;

	/* Generate a filter */
	qalGenFilters(1, &underwaterFilter);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Couldn't generate an OpenAL filter!\n");
		return;
	}

	/* Low pass filter for underwater effect */
	qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Low pass filter is not supported!\n");
		return;
	}

    qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, AL_LOWPASS_DEFAULT_GAIN);

    s_underwater->modified = true;
    s_underwater_gain_hf->modified = true;
}
Beispiel #3
0
static void AL_InitUnderwaterFilter()
{
	// Generate a filter
	qalGenFilters(1, &underwaterFilter);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Couldn't generate an OpenAL filter!\n");
		return;
	}

	// Low pass filter for underwater effect
	qalFilteri(underwaterFilter, AL_FILTER_TYPE, AL_FILTER_LOWPASS);

	if (qalGetError() != AL_NO_ERROR)
	{
		Com_Printf("Low pass filter is not supported!\n");
		return;
	}

	// The effect
	qalFilterf(underwaterFilter, AL_LOWPASS_GAIN, 1.5);
	qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, 0.25);
}
Beispiel #4
0
void oal_update_underwater()
{
    int i;
    float gain_hf;
    qboolean update = false;
    ALuint filter;

    if (underwaterFilter == 0)
        return;

    if (s_underwater->modified) {
        update = true;
        s_underwater->modified = false;
        snd_is_underwater_enabled = ((int)s_underwater->value != 0);
    }

    if (s_underwater_gain_hf->modified) {
        update = true;
        s_underwater_gain_hf->modified = false;
    }

    if (!update)
        return;

    gain_hf = s_underwater_gain_hf->value;

    if (gain_hf < AL_LOWPASS_MIN_GAINHF)
        gain_hf = AL_LOWPASS_MIN_GAINHF;

    if (gain_hf > AL_LOWPASS_MAX_GAINHF)
        gain_hf = AL_LOWPASS_MAX_GAINHF;

    qalFilterf(underwaterFilter, AL_LOWPASS_GAINHF, gain_hf);

    if (snd_is_underwater_enabled && snd_is_underwater)
        filter = underwaterFilter;
    else
        filter = 0;

    for (i = 0; i < s_numchannels; ++i)
        qalSourcei(s_srcnums[i], AL_DIRECT_FILTER, filter);
}