Как сбросить стоп-слова в MySQL?

Вы не можете сделать это с помощью поверхностных шейдеров, но вы можете сделать это очень эффективно с вершинными фрагментными шейдерами. Unity хранит 4 источника света ближайших точек в наборе векторов, которые будут использоваться для источников света на каждую вершину (не важно). К счастью, они также доступны в фрагментном шейдере, так что вы можете использовать их, чтобы закрасить все 4 источника света за один проход! Когда вы суммируете все источники света, убедитесь, что их интенсивность не может превышать 1. Вот быстрый шейдер, который я собрал для вас:

Shader "Unlit/ToonTest"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Name "FORWARD"
        Tags { "LightMode" = "ForwardBase" "RenderType" = "TransparentCutout" "Queue"="AlphaTest"}
        Cull Off
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile_fog
            #pragma multi_compile_fwdbase

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                half3 normal : NORMAL;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
                float3 worldPos : TEXCOORD1;
                float3 ambient : TEXCOORD2;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.ambient = ShadeSH9(mul(unity_ObjectToWorld, float4(v.normal, 0.0 ))); // Ambient from spherical harmonics
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            float3 Shade4Lights (    
                float4 lightPosX, float4 lightPosY, float4 lightPosZ,
                float3 lightColor0, float3 lightColor1, float3 lightColor2, float3 lightColor3,
                float4 lightAttenSq,
                float3 pos)
            {
                // to light vectors
                float4 toLightX = lightPosX - pos.x;
                float4 toLightY = lightPosY - pos.y;
                float4 toLightZ = lightPosZ - pos.z;
                // squared lengths
                float4 lengthSq = 0;
                lengthSq += toLightX * toLightX;
                lengthSq += toLightY * toLightY;
                lengthSq += toLightZ * toLightZ;
                // don't produce NaNs if some vertex position overlaps with the light
                lengthSq = max(lengthSq, 0.000001);

                // attenuation
                float4 atten = 1.0 / (1.0 + lengthSq * lightAttenSq);
                float4 diff = atten; //ndotl * atten;
                // final color
                float3 col = 0;
                col += lightColor0 * diff.x;
                col += lightColor1 * diff.y;
                col += lightColor2 * diff.z;
                col += lightColor3 * diff.w;
                return col;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                half3 intensity = Shade4Lights(unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0, unity_LightColor[0], unity_LightColor[1], unity_LightColor[2], unity_LightColor[3], unity_4LightAtten0, i.worldPos);
                intensity = min((half3)1, i.ambient + intensity);

                col.rgb *= intensity;

                clip(col.a - 0.5);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            }
            ENDCG
        }
    }
}

Функция «Shade4Lights» является модифицированной версией Unity "Shade4PointLights", с рассеянным рассеянным освещением Ламберта (только ослабление). Вам также необходимо добавить функцию RetroAA в выборку текстур. Ваше значение отсечения - это «- 0.5» внутри функции «clip» - вы можете выставить это, если вам это нужно. Если вам нужно отбрасывать тени для этого шейдера, вы можете скопировать / вставить теневой проход из стандартного шейдера Unity (вы можете скачать исходный код с их страницы). Для получения тени вам необходимо добавить несколько строк в шейдер - снова проверьте исходный код для этого.

Подробнее о встроенных переменных шейдера можно прочитать здесь:

https://docs.unity3d.com/Manual/SL-UnityShaderVariables.html

7
задан hippietrail 26 October 2012 в 00:13
поделиться

3 ответа

Я полагаю, вы используете WampServer .

Щелкните значок на панели задач, выберите MySQL , затем нажмите my.ini . Файл конфигурации откроется в блокноте. Перейдите в конец файла и добавьте эту строку (после строки порта):

 ft_stopword_file=''

, чтобы отключить стоп-слова. Если вы хотите использовать пользовательский файл стоп-слов, замените эту строку на:

ft_stopword_file='path/to/stopword_file.txt'

(конечно, укажите путь к файлу стоп-слова).

После установки этой строки сохраните файл конфигурации (Файл -> Сохранить) , Затем щелкните значок на панели задач, выберите MySQL , затем Сервис , затем нажмите Перезапустите Сервис .

Чтобы убедиться, что ваша конфигурация выполнена правильно, откройте phpMyAdmin в браузере, нажмите на вкладку Переменные вверху,

11
ответ дан 6 December 2019 в 23:13
поделиться

Список стоп-слов, с которыми MySQL поставляется (по крайней мере для MyISAM), можно найти в источнике MySQL, в myisam / ft_static.c .

Обратите внимание, что это только английские стоп-слова. Предположительно, стоп-слова для других языков определены в другом месте ...

Вы можете переопределить или отключить список стоп-слов по умолчанию, используя директиву ft_stopword_file , как указано в комментариях. Полная документация здесь .

0
ответ дан 6 December 2019 в 23:13
поделиться

Вы можете найти список используемых стоп-слов здесь: https://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html . Я сохранил этот список в файл и сослался на него из конфигурационного файла MySQL (например, ft_stopword_file = 'path / to / stopword_file.txt' ).

Я удалил «it» и «us» из список стоп-слов, потому что они означают «Информационные технологии» и «Соединенные Штаты» в моей проблемной области.

К сожалению, каждый раз, когда вы меняете список стоп-слов, вам приходится перезапускать MYSQL и перестраивать полнотекстовые индексы.

0
ответ дан 6 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: