Error c1115 unable to find compatible overloaded function

I am trying to write a fragment shader and I've hit a wall. This is only my second shader so I'm very new to this and I'm almost certain I'm just not dealing with the data types properly and that's...

I am trying to write a fragment shader and I’ve hit a wall. This is only my second shader so I’m very new to this and I’m almost certain I’m just not dealing with the data types properly and that’s where the error is coming from but for the life of me I can’t seem to fix it. The goal is to be able to pass a texture to the function so I can call it again and again… Any and all help would be appreciated!

The error I get is: error C1115: unable to find compatible overloaded function «texture2D(vec3, vec2)».

uniform sampler2D image;
uniform float radius;
uniform float adsk_result_w, adsk_result_h;

vec2 iResolution = vec2(adsk_result_w, adsk_result_h);
vec2 uv=(gl_FragCoord.xy/iResolution.xy);
vec2 vTexCoord = (gl_FragCoord.xy/iResolution.xy);
float blurSize = radius/iResolution;

vec4 hblur(vec4 frontin ) {
    vec3 RTScene = frontin.rgb;
    vec4 sum = vec4(0.0);
    sum += texture2D(RTScene, vec2(vTexCoord.x - 4.0*blurSize, vTexCoord.y)) * 0.05;
    sum += texture2D(RTScene, vec2(vTexCoord.x - 3.0*blurSize, vTexCoord.y)) * 0.09;
    sum += texture2D(RTScene, vec2(vTexCoord.x - 2.0*blurSize, vTexCoord.y)) * 0.12;
    sum += texture2D(RTScene, vec2(vTexCoord.x - blurSize, vTexCoord.y)) * 0.15;
    sum += texture2D(RTScene, vec2(vTexCoord.x, vTexCoord.y)) * 0.16;
    sum += texture2D(RTScene, vec2(vTexCoord.x + blurSize, vTexCoord.y)) * 0.15;
    sum += texture2D(RTScene, vec2(vTexCoord.x + 2.0*blurSize, vTexCoord.y)) * 0.12;
    sum += texture2D(RTScene, vec2(vTexCoord.x + 3.0*blurSize, vTexCoord.y)) * 0.09;
    sum += texture2D(RTScene, vec2(vTexCoord.x + 4.0*blurSize, vTexCoord.y)) * 0.05;
return vec4(sum);
}

void main() {
    vec4 front = texture2D(image, uv);
    vec4 work = hblur(front);

    gl_FragColor = vec4(work);
}

Hi,

This question pertains specifically to using NVidia Cg with DX11.

I’m trying to write a simple terrain tesselation shader that tesselates a quad patch and applies a heightmap in the domain shader for vertex displacent. I’m passing in the heightmap as a 2D texture and using the following line to sample the texture.


pos.z = tex2D(heightmapTexture, texUV).r;

But this doesn’t compile and I get the following error.


error C1115: unable to find compatible overloaded function "Sample(sampler2D, float2)"

Is this the correct syntax for sampling a texture in the domain shader, or is this not currently supported?

Thanks.

I don’t really know Cg, but if tex2D is equivalent to what it was in older HLSL then you can’t use it anything except for a pixel shader. This is because it uses screen-space gradients to automatically select the mip level, and gradients can only be computed in a pixel shader. Try using tex2Dlod, or whatever the Cg equivalent is for a function that lets you manually specify the mip level.

This is because it uses screen-space gradients to automatically select the mip level, and gradients can only be computed in a pixel shader. Try using tex2Dlod

Interesting. I knew you couldn’t use tex2D in all the stages but didn’t know the reason why. I believe I already tried tex2Dlod, but I’ll give it another shot.

Thanks for replying.

Hmm.. at first I thought that using tex2Dlod worked, but now I get this compile error instead.


error C1115: unable to find compatible overloaded function "SampleLevel(sampler2D, float2, float)"

Have you confirmed that ‘texUV’ is a float2.

Consider it pure joy, my brothers and sisters, whenever you face trials of many kinds, 3 because you know that the testing of your faith produces perseverance. 4 Let perseverance finish its work so that you may be mature and complete, not lacking anything.

It seems that for tex2Dlod, you’d have to use float4 for ‘texUV’ //=================================================================== sampler2D samp; float4 tex2Dlod(sampler2D samp, float4 s)// s.w selects the mipmap level //=================================================================== http://http.developer.nvidia.com/Cg/tex2Dlod.html //=================================================================== And it says at the bottom that your GPU must support the vp40 profile. If you have a decent video card this should not be a problem. I suspect a lot of laptops might not support this.

Consider it pure joy, my brothers and sisters, whenever you face trials of many kinds, 3 because you know that the testing of your faith produces perseverance. 4 Let perseverance finish its work so that you may be mature and complete, not lacking anything.

Yes, I did use a float2 when using tex2D and a float4 when using tex2Dlod. My graphics card is a AMD 7970. I also tried it on a GTX 480. Still no luck.

Sorry for the delayed response, I was away for sometime.

hi.

I wrote this cg shader. It’s a simple point light not attenuated calculated per pixel. Diffuse use Lambert and specular use Blinn-Phong:

Code: Select all

void main_vp(
		float4 inPosition	      : POSITION,  //object-space
		float3 inNormal		: NORMAL,      //object-space
		float2 inTexCoord      : TEXCOORD0,

		 // outputs
		 out float4 oPosition         : POSITION,   //world view projection space
		 out float2 outTexCoordForFP  : TEXCOORD0,  //onject-space
		 out float3 outNormalForFP    : TEXCOORD1,  //object-space
		 out float4 outPositionForFP  : TEXCOORD2,   //object space

		 // parameters
		 uniform float4x4 worldViewProj)
{


	outNormalForFP = normalize(inNormal);

  	// calculate output vertex position
	oPosition = mul(worldViewProj, inPosition);

      //output vertex position for fragment program
	outPositionForFP = inPosition;

      //copy texture coordinate in the new registry
	outTexCoordForFP = inTexCoord;

}

void main_fp(	
			float2 inTexCoord    : TEXCOORD0,
			float3 normal        : TEXCOORD1,  //object space
			float4 position      : TEXCOORD2,  //object space
			
			//outputs 
			out float4 colour	: COLOR,

                        // parameters
 			uniform float3 lightPosition,    // object space
			uniform float3 eyePosition,      // object space
			uniform float4x4 worldViewProj,
			 
			uniform float4 shininess,
			uniform float4 diffuse,
			uniform float4 specular,
			uniform float4 ambient,

			uniform sampler2D textureRamp
             )
{


	// calculate light vector
	float3 N = normalize(normal);
	float3 L = normalize(lightPosition - position.xyz);
	
	// Calculate diffuse component
	float4 diffuseColour = max(dot(N, L) , 0);

	// Calculate specular component
	float3 E = normalize(eyePosition - position.xyz);
	float3 H = normalize(L + E);
	float4 specularColour = pow(max(dot(N, H), 0), shininess);

	// Mask off specular if diffuse is 0
//	if ( diffuseColour.rgb == float3(0,0,0) ) specularColour.rgb = float3(0,0,0); 

	//Calculate attenuation
//	float lightRange = lightAttenuation.x;
//	float lightAttenuationCostant = lightAttenuation.y;
//	float lightAttenuationLinear = lightAttenuation.z;
//	float lightAttenuationQuadratic = lightAttenuation.w;

//	float attenuation = 1.0 / ( lightAttenuationCostant + (lightDistance * lightAttenuationLinear) + (lightDistance * lightDistance * lightAttenuationQuadratic) );


      //Get texture color
	float4 textureColour = tex2D(textureRamp, inTexCoord.xy).xyzw;

	colour = ( (diffuseColour * diffuse) + ambient ) * textureColour + (specularColour * specular) ;
	

}

Under opengl it works fine, under directx it doesn’t work, and ogre.log says it can’t compile the shaders (only under directx)

Here is aaa_shaders.material (parsed before Ninja_PhongShading.material, as described in the ogre.log. This is because I want to keep the shaders definition separately from the entity material, but the shaders.material must be loaded before all materials use the shaders defined in. This is why aaa__)

Code: Select all

// -------------------------------
// Blinn Phong Shading Section
// -------------------------------

vertex_program Programs/BlinnPhongVP cg
{
	source PhongShadingPP.cg
	entry_point main_vp
	profiles vs_1_1 arbvp1

	default_params
	{
		param_named_auto worldViewProj worldviewproj_matrix
	}
}

fragment_program Programs/BlinnPhongFP cg
{
	source PhongShadingPP.cg
	entry_point main_fp
	profiles ps_1_1 arbfp1 fp20

      default_params
	{
		param_named_auto lightPosition light_position_object_space 0
		param_named_auto eyePosition camera_position_object_space
		param_named_auto worldViewProj worldviewproj_matrix
	}

}

and this is Ninja_PhongShading.material:

Code: Select all

material Ninja/PhongShading
{
	technique
	{
		pass
		{
			vertex_program_ref Programs/BlinnPhongVP 
			{
				
			}

			fragment_program_ref Programs/BlinnPhongFP
			{
				param_named shininess float 20
				param_named diffuse float4 .65 .65 .65 1
				param_named specular float4 1 1 1 1
				param_named ambient float4 .2 .2 .2 1
			}

			//the ninja texture unit
			texture_unit
			{
				texture nskingr.jpg 2d
				filtering none
				tex_coord_set 0
			}
		}
	}
}

This is ogre.log under directx:

Code: Select all

13:18:04: Parsing script aaa__shaders.material
13:18:04: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Programs/BlinnPhongFP: CG ERROR : The compile returned an error.
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(69) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(78) : warning C7011: implicit cast from "float4" to "float"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(78) : warning C7011: implicit cast from "float4" to "float"
 in CgProgram::loadFromSource at e:projectsogrecvsbrancheseihort_vc8_cleanogrenewpluginscgprogrammanagersrcogrecgprogrammanagerdll.cpp (line 66)
13:18:04: High-level program Programs/BlinnPhongFP encountered an error during loading and is thus not supported.
OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Programs/BlinnPhongFP: CG ERROR : The compile returned an error.
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(69) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(78) : warning C7011: implicit cast from "float4" to "float"
(69) : error C1115: unable to find compatible overloaded function "normalize"
(69) : error C1060: incompatible types in initialization
(70) : error C1115: unable to find compatible overloaded function "normalize"
(70) : error C1060: incompatible types in initialization
(76) : error C1115: unable to find compatible overloaded function "normalize"
(76) : error C1060: incompatible types in initialization
(77) : error C1115: unable to find compatible overloaded function "normalize"
(77) : error C1060: incompatible types in initialization
(78) : warning C7011: implicit cast from "float4" to "float"
 in CgProgram::loadFromSource at e:projectsogrecvsbrancheseihort_vc8_cleanogrenewpluginscgprogrammanagersrcogrecgprogrammanagerdll.cpp (line 66)
13:18:04: Parsing script Ninja_CelShading.material
13:18:04: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Programs/CelShadingPVTexFP: CG ERROR : The compile returned an error.
(79) : fatal error C9999: too many arithmetic instructions generated
 in CgProgram::loadFromSource at e:projectsogrecvsbrancheseihort_vc8_cleanogrenewpluginscgprogrammanagersrcogrecgprogrammanagerdll.cpp (line 66)
13:18:04: High-level program Programs/CelShadingPVTexFP encountered an error during loading and is thus not supported.
OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program Programs/CelShadingPVTexFP: CG ERROR : The compile returned an error.
(79) : fatal error C9999: too many arithmetic instructions generated
 in CgProgram::loadFromSource at e:projectsogrecvsbrancheseihort_vc8_cleanogrenewpluginscgprogrammanagersrcogrecgprogrammanagerdll.cpp (line 66)
13:18:04: Parsing script Ninja_PhongShading.material
13:18:04: Parsing script RomanBath.material

I can’t totally understand the log. normalize() should take a float3, and it does under ogl, but under directx semms not

«unable to find compatible overloaded function «normalize»»

Help

main

refactor-mesh-face-generic

temp-sculpt-roll-mapping

sculpt-dev

refactor-mesh-sharp-face-generic

refactor-mesh-corners-generic

tmp-volume-matrix-api-update

tmp-eevee-shadow-commit-mp

universal-scene-description

cycles_path_guiding

temp-vulkan-descriptor-sets

tmp-eevee-shadow-commit

temp-angavrilov

asset-shelf

brush-assets-project

blender-v3.3-release

tmp-workbench-rewrite2

temp-T101739-fix-seam-bleeding-non-manifold

tmp-mak-012623

gpencil-new-data-proposal

temp-bundled-assets

asset-lite-greasepencil

temp-pbvh-split

temp-pbvh-texpaint-automasking

microfacet_hair

tmp-worbench-rewrite2-optimizations

temp-offset-array-ref

blender-v2.93-release

blender-projects-basics

temp-pbvh-seam-texturing-tweaks

temp-nodes-group-declarations

refactor-mesh-sharp-edge-generic

temp-asset-library-all

refactor-mesh-uv-map-generic

refactor-mesh-position-generic

temp-T102440

temp-rbf-pose-blender

geometry-nodes-tetrahedralization

nodes-matrix-types

temp-xr-painting

blender-v3.4-release

geometry-nodes-simulation

bli-matrix-template

temp-linux-35x-libs

refactor-mesh-corner-normals-lazy

temp-py-gpubatch-draw-advanced

xr-dev

temp-vulkan-shader

bevelv2

soc-2022-soft-bodies

arcpatch-D16436

tmp-dynamic-usd

temp-image-engine

tmp-vfx-platform-2023

soc-2022-many-lights-sampling

tracking_tools

nla-scale-fix

principled-v2

temp-ui-cpp

temp-ghost-vulkan

tmp-libs-2.93-lts

temp-T97352-3d-texturing-seam-bleeding-b2

temp-xr-virtual-camera-experiment

temp-vse-retiming-tool

gpencil-next

temp-sculpt-brush-channel

asset-browser-grid-view

temp-asset-representation

temp-gpencil-automask

tmp_libs_34

temp-T101905-gpu-backend-argument

node-add-asset-menu

temp-collection-objects-link-multiple

temp-texture-painting-gpu

overlay-next

tmp-workbench-perf-experiment

tmp_usd_import_unbound_mtls

tmp-drw-split-matrix

temp-sculpt-normals-masking

temp-sculpt-cavity-mask

temp-pbvh-vbos

tmp-usd-alab-v2-T100452

refactor-mesh-selection-generic

temp-T96708-brush-texture-refactoring

temp-chunk-list

feature-imformat

temp-geometry-nodes-evaluator-refactor

refactor-mesh-bevel-weight-generic

temp-chunked-list

temp-outliner-new-element-storage

refactor-mesh-remove-pointers

soc-2022-text-usability

refactor-mesh-material-index-generic

drw-manager-next

refactor-mesh-hide-generic

blender-v3.2-release

sculpt_curve_collisions

temp-anim-editors-redo-panel-D14960-D14977

retopo_transform

temp-libepoxy

temp-T99046-platform-reference-images

geometry-nodes-rigid-body-integration

file-browser-grid-view

temp-legacy-mesh-format-option

arcpatch-D14645

soc-2022-waveform-drawing

temp-T95933-object-mode-curve-selection

temp-deform-curves-on-surface

cycles_oneapi

temp-viewport-compositor-merge

temp-texpaint-automasking

temp-deform-curves-with-surface

asset-greasepencil

temp-T99046-render-test-increase-fail-threshold

temp-T98708-gpu-conservative-depth

lineart-shadow

temp-lineart-contained

cleanup-id-override-const

temp-T98375-share-gpu-textures

wintab

temp-T97352-3d-texturing-seam-bleeding

temp-T97905-compositor-meta-data

lineart-cas-2

temp-T97272

temp-T97907-compositor-meta-data

temp-T96952

tmp-usd-mak-c87f6242

temp-outliner-library-override-hierarchy

lineart-object-load

tmp-eevee-next-merge

draw-deferred-compilation-experiment

soc-2021-porting-modifiers-to-nodes-remesh-voxel

blender-v2.83-release

tmp_lib_update_32

temp-mesh-cpp

temp-viewport-compositor-compiler

temp-T96710-pbvh-pixels

tmp-new-gpu-codegen

devirtualizer

temp-T96709-painting-target

temp-collection-assets

temp-lineart-embree

temp-multi-function-eval-varray

temp-sculpt-colors

soc-2021-curves

blender-v3.1-release

temp-vertex-paint

temp-vse-channels-edge-panning

eevee-rewrite

temp-library-overrides-outliner

cycles_hydra

temp-3d-texturing-brush-b

temp-abc-features

tmp-transform-navigate

temp-image-buffer-rasterizer

soc-2021-porting-modifiers-to-nodes-remesh-blocks

temp-3d-texture-brush-prototype

temp-fix-normals-custom-data

viewport-compositor

bli-math-basic-types

soc-2021-simulation-display

greasepencil-object

temp-license-header-spdx

KTX_support

gsoc-2021-porting-modifiers-to-nodes-solidify

2d

gltf_vtree

soc-2021-porting-modifiers-to-nodes-decimate

temp-T95279-remap-referenced-data

temp-gpu-image-engine

tmp-eevee-rewrite-compilation-error

draw-viewport-data

temp-T94900-b

temp-T94900-gpu-viewport-default-layers

temp-T94185-id-remapper-ui

tmp-workbench-shader-create-infos

blender-v3.0-release

temp-geometry-nodes-extrude-mesh

tmp-T95052

tmp-gpu-polyline-shaders

tmp-gpu-shader-descriptor-2

temp-usd-prev-export2

tmp-core-id-remap-test-cases

temp-vert-normals-cleanup

temp-move-geometry-to-cpp

tmp-vector-template

drw-gpu-wrapper

temp-geometry-nodes-extrude-and-scale

temp-scale-elements-node-test

temp-usd-udim-import

temp-copy-on-write

temp-T94185-id_remapping-experiment-a

temp-llvm-testing

nurbs-opencascade

temp-usd-preview-surf-export

soc-2021-uv-edge-select-support

T93558

temp-gpu-texture-partial-updates

gpu-shader-descriptor

temp-geometry-nodes-text

tmp-vulkan

temp-T90535-usd-alab-material-import

node-tree-update-refactor

temp-sample-sound-node

temp-interface-region-search-cpp

temp-enum-socket

temp-link-portals

temp-unity-build-test

geometry-nodes-level-set-nodes

temp-virtual-array-value-type

soc-2020-io-performance

studio-sprite-fright

temp-cycles-source-reorganize

asset-browser-snap-dragging

temp-python-zstandard

soc-2021-porting-modifiers-to-nodes-merge-by-distance

temp-compositor-cleanups

temp-eevee-gpencil-rewrite

temp-vse-handles

temp-ui-tweaks

xr-controller-support

temp-node-common-cpp

temp-varray-get-set-multiple

soc-2021-uv-editor-improvements

temp-geometry-nodes-output-attributes

soc-2021-knife-tools

temp_test_sc_keymap

cycles-x

temp-field-visualization

soc-2021-curve-fillet

temp_bmesh_multires

temp-cocoa-scroll-acceleration-fix

temp-socket-decl-refactor

fluid-mantaflow-gpu

soc-2021-vse-strip-thumbnails

temp-noise-nodes-cpp

temp-compositor-canvas

T90952

temp-parallel-multi-function

temp-geometry-nodes-fields

grab_walk_fix

soc-2021-adaptive-cloth

temp-geometry-nodes-fields—fields-jacques

temp-cpp-ghc-filesystem

temp-geometry-nodes-fields—fields

temp-geometry-nodes-fields—anonymous-attributes

refactor-idprop-ui-data

compositor-full-frame

temp-runtime-node-def

temp-geometry-nodes-fields-prototype-visualization

temp-geometry-nodes-fields-prototype

temp-multi-function-procedure

soc-2021-porting-modifiers-to-nodes_all

cycles_texture_cache

experimental-build

cycles_procedural_api

soc-2021-porting-modifiers-to-nodes-extrude-and-move

soc-2021-porting-modifiers-to-nodes-extrude

temp-geometry-nodes-expandable-geometry-socket-prototype

fluid-mantaflow-2d

windows_make_docpy

usd-importer-T81257-merge

nodes-update-readonly-tag

geometry-nodes-closest-points

tmp-buildbot-gcc-10

soc-2021-geometry-nodes-regression-test

node-group-single-socket-nodes

curve-nodes-modifier

temp-geometry-nodes-curve-sample

geometry-nodes-unnamed-attributes

temp-nodes-intersect-alt-key

tmp_arcpath-D11868

refactor-vertex-group-names

temp-gpencil-bezier-stroke-type

temp-gpu-uniform-builtin-structs

wintab_fallback_walknav

temp-socket-inspection

temp-long-link-dimming

fixed_width_integers

lineart-bvh

temp-gpencil-camera-reproject

temp-gpu-push-constants

temp-attribute-processor

temp-cpp-type-cleanup

temp-geometry-nodes-curve-deform-node

wintab-logging

fix-tablet-walk

geometry-nodes-raycast

temp-spreadsheet-row-filter

lineart-fn-cached

temp-compact-node-prototype

asset-browser

geometry-nodes-curve-to-points-node

node-editor-edge-pan

eevee-gpencil

asset-system-filelist

temp-geometry-nodes-viewer-node

lineart-fn-thread-loading

tmp-buildbot-cleanup

temp-gpencil-masking

temp-ffmpeg-4.4

temp-attributes-panel

profiler-editor

FixT87160_DSE_Channel_Selection

temp-interface-cpp

geometry-nodes-curve-support

info-editor-cpp

temp-attribute-transfer-node

virtual-array-attributes

temp-pose-slide-D9054

spreadsheet-active-node

ui-asset-view-template

temp-node-tree-pages-prototype

override-outliner-view

temp-geometry-nodes-processor-prototype

temp-any-instead-of-variant

temp-unreachable-abort

temp-spreadsheet-instances

temp-geometry-nodes-instances-api-v2

temp-geometry-nodes-instances-attributes

geometry-nodes-mesh-primitives

temp-asset-tools-prototype

temp-geometry-nodes-mesh-primitive-line

lanpr-under-gp

temp_D10504-2_nla_keyframe_remap_upper_strips

blender-v2.92-release

usd-importer-T81257

temp-spreadsheet-editor-python-prototyping

temp-spreadsheet-editor

override-refactor-tmp-2

temp-derived-node-tree-refactor

T85799

tracking_scopes

temp-icons-fixes

temp_D10504_nla_keyframe_remap_upper_strips

temp-weight_mirror

temp_T76472_graph_editor_fcurve_extrapolation

eevee-closure-lib-cleanup

eevee-dof-refactor

eevee-probe-roughness-fix

eevee-ggx-lut-fix

df0bce3f7d0

temp-geometry-nodes-instances-api

tmp-ocio-v2

temp-nodes-redesign

tracking_proportional_editing_v2

blender-v2.91-release

temp-uv-face-select-no-thresh-when-inside

temp-D10103-nla_support_strip_overlap_during_transform

fracture_modifier

temp-point-distribution-refactor-experiment

temp-experimental-cpp-math-refactor

vfx-clip-ui-update

tmp-T82230-nla_remove_hold_reset_behavior

temp-D8687-directly_select_fcurves

geometry-nodes

soc-2020-testing-frameworks

geometry-nodes-point-separate-node

temp-nla-strip-alignment

temp-atomics-int16

geometry-nodes-deduplicate-float-math

asset-metadata

geometry-nodes-active-modifier-drawing

attribute-accessor

geometry-nodes-attribute-nodes

temp-T82588-box-select-invisible-keys

greasepencil-edit-curve

codesign_error_tracker

outliner-cpp-refactor

temp-fix-headerless-panels-switch-windows

temp-gpencil-fading-modifier

temp-D8915-copy-rotation-remove-sheer

geometry-nodes-boolean-node

temp-T81874-box-select-active-keyframe

geometry-nodes-transform-node

temp-trimesh-sculpt

geometry-tree-evaluation

fcurve-modifier-panels

temp-fcurve-key-insert-follow-curve

temp-fcurve-active-keyframe-D7737

mesh-to-volume-modifier

blender-v2.90-release

soc-2020-fluid-tools

property-search-ui-v2

tmp-T80603

soc-2020-greasepencil-curve

tmp-gldebuglayer

tmp-gltexture

soc-2020-custom-menus

active-fcurve-keyframe

soc-2020-soft-body

newboolean

fail-on-memleak

soc-2020-outliner

soc-2020-production-ready-light-tree-2

soc-2020-info-editor

property-search-ui

temp-ui-button-type-refactor

soc-2020-production-ready-light-tree

particle-solver-dev

tmp-gpu-context-isolation

soc-2020-xr-input

temp-remesh-octree

mac_arm64

tmp-eevee-glsl-cleanup

tmp-pointcloud-render

buildbot-lts

asset-engine—archived

asset-uuid—archived

eevee-motionblur-object

modifier-panels-ui

temp-cycles-tbb

wm-drag-drop-rewrite

temp-lanpr-review

gsoc-2018-many-light-sampling

tmp-eevee-material-refactor

tmp-widget-opti

tmp-texture-sampler

xr-world-navigation

blender-v2.82-release

node-tree-ref

simulation-access-modifier

blenloader-decentralization

temp-test-point-cloud-simulation-depsgraph-integration

functions

builtin-simulation-nodes

performance-test

obj-import-experiments

soc-2019-openxr

vr_scene_inspection

blenloader-api

tmp-workbench-rewrite

id-ensure-unique-memory-address

simulation-tree

greasepencil-refactor

draw-colormanagement

temp-gizmo-decoupled-redraws

fluid-mantaflow

blender-v2.81-release

tmp-overlay-engine

soc-2019-bevel-profiles

temp-npr-gpencil-modifiers

soc-2019-npr

temp-gpencil-drw-engine

soc-2019-embree-gpu

temp-npr-smooth-contour

temp-lanpr-staging

filebrowser_redesign

tmp-eevee-shadowmap-refactor

vamr-openxr-module

sculpt-mode-features

soc-2019-adaptive-cloth

tmp-drw-callbatching

soc-2019-outliner

soc-2019-cycles-procedural

temp-D5423-update

temp-vr-draw-thread

blender-v2.80-release

tmp-batch-cache-cleanup

soc-2019-fast-io

temp-toolsystem-multiwindow

blender2.7

collada

soc-2018-npr

temp-keymap-industry-compat

temp-fracture-modifier-2.8

temp-dna-rename

userpref_redesign

hair_object

motion_curve_fix

collada2.8

cycles_embree

interactive_physics

temp-ui-layout-2.8

cloth-improvements

soc-2018-cycles-volumes

hair_guides_grooming

hair_guides

benchmark

soc-2018-bevel

soc-2018-hair-shader-fixes

temp-udim-images

soc-2018-hair-shader

temp-volume-object

cycles_cryptomatte

temp-eeveelightcache

temp-tab_drag_drop

temp-keymap-save

temp-dynamic-overrides

fracture_modifier-master

ui_layout_gridflow

temp-keymap-changes

tmp-CollectionsAnim

tmp-b28-motionpath-drawing

uv_unwrapping_slim_algorithm

blender-v2.79b-release

tmp-COW_InsertKeyframe_Fix

temp-unified-collections

temp-modifier-rm-cddm

tmp-TimelineHeaderButtonsStretching

blender2.8-workbench

soc-2017-normal-tools

cycles_bvh8

blender-v2.79a-release

temp-scene-obedit-remove

temp-workspace-object-mode-removal

blender-v2.79-release

soc-2017-sculpting_brush

split-kernel-faster-building

id_override_static

openvdb

custom-manipulators

soc-2016-uv_tools

soc-2016-pbvh-painting

soc-2017-vertex_paint

soc-2017-sculpting_improvements

soc-2017-package_manager

strand_editmode

smooth-fcurves

id_copy_refactor

gsoc2016-improved_extrusion

temp-ssr

temp-cycles-opencl-staging

temp-cycles-denoising

ge_2df_textures

HMD_viewport

soc-2016-multiview

transform-manipulators

datablock_idprops

cycles_disney_brdf

temp_cycles_split_kernel

cycles_split_kernel

unlock_task_scheduler

uv_unwrapping_slim_and_ceres

surface-deform-modifier

cycles-tiles-rework

soc-2016-cycles_denoising

temp-layers-ui-table

uiTable

render-layers

clay-engine

multi_previews_id

cycles_disney_bsdf_transmittance

layers

pbr-viewport

temp_display_optimization

viewport_bvh_select

temp-cycles-microdisplacement

soc-2016-cycles_images

strand_nodes

object_nodes

asset-experiments

soc-2016-sculpt_tools

temp_viewport_fx_merge

custom-normals-bmesh

temp-decklink

compositor-2016

decklink

BendyBones

cycles_panorama_experiments

temp_remove_pointcache

temp_remove_particles

temp_depsgraph_split_ubereval

temp_textedit_comment_toggling

GPencil_Editing_Stage3

temp_bge_moto

UI-experiments

UI-graphical-redesign

missing-libs

free-refcount-ids

cycles_camera_nodes

epic-navigation

temp-ui-widget-refactor

gooseberry_farm

gooseberry

temp-ghash-experiments

temp-ghash-setops

temp_motionpaths

fcurves-simplify

soc-2014-fluid

GPU_data_request

depsgraph_refactor

multiview

vertex_paint_pbvh

alembic_pointcache

cycles-ptex-49

viewport_experiments

soc-2014-bge

texture_nodes_refactor

input_method_editor

GPencil_EditStrokes

soc-2014-shapekey

terrible_consequencer

GPencil_FillStrokes

libmv_prediction

blender2.4

dyntopo_holes

soc-2014-viewport_context

gtest-staging

blender-tiles

soc-2014-viewport_fx

soc-2014-remesh

soc-2014-nurbs

pie-menus

soc-2014-cycles

soc-2013-paint

particles_refactor

soc-2013-viewport_fx

tiles-scheduler

bake-cycles

soc-2013-cycles_volume

overscan

soc-2013-depsgraph_mt

soc-2013-dingto

soc-2013-sketch_mesh

soc-2013-rigid_body_sim

soc-2011-tomato

soc-2013-bge

soc-2013-motion_track

soc-2013-ui_replay

soc-2012-sushi

ge_dev

soc-2013-depsgraph_eval

soc-2008-mxcurioni

soc-2012-bratwurst

soc-2012-swiss_cheese

soc-2012-fried_chicken

meshdata_transfer

smoke2

tile

soc-2011-cucumber

bmesh

soc-2011-carrot

cycles

soc-2011-garlic

soc-2011-radish

soc-2010-nicks

vgroup_modifiers

soc-2011-pepper

soc-2010-jwilkins

merwin-spacenav

bge_components

soc-2010-merwin

render25

soc-2010-nicolasbishop

soc-2009-chingachgook

soc-2010-nexyon

soc-2010-aligorith

ge_eigen2

sculpt25

soc-2009-jaguarandi

soc-2009-imbusy

soc-2009-kazanbas

blender2.5

volume25

soundsystem

soc-2009-aligorith

sim_physics

ge_dome

etch-a-ton

soc-2008-nicholasbishop

animsys2

projection-paint

harmonic-skeleton

soc-2008-jaguarandi

fluidcontrol

apricot

soc-2008-quorn

cloth

ndof

orange

This discussion has been locked.

You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Please confirm shader language version used in ARM GLES 3.1 emulator version 2.2? User guide attached with emulator(Mali OpenGL ES Emulator 2.2 User Guide.pdf, Page 19) suggests that it support 3.1

===========================================

Shading Language Version

For OpenGL ES 2.0 contexts, the Mali OpenGL ES Emulator supports up to version 1.2 of the OpenGL

ES Shader Language.

For OpenGL ES 3.0 contexts, OpenGL ES Shader Language version 3.0 is supported. For OpenGL ES

3.1 contexts, OpenGL ES Shader Language 3.1 is supported.

==================================================

Whereas when I compile shader with ;#version 310 es’ as first line it gives following compilation error.

==========================================

Log START:

Error: 0:1: P0007: Language version ‘310’ unknown, this compiler only supports up to version ‘300 es’
Error: 0:1: P0007: Unexpected text found after #version directive
Error: 0:3: L0001: Typename expected, found ‘in’

Log END

================================================

Note: If current compiler supports upto version 300 es only, when can I expect next release with version ‘310 es’

Regards

Sunil

  • Adam Charytoniuk

    Hi Sunil,

    I confirm that the Open GL ES Emulator 2.2 does support shaders with #version 310 es as stated in User Guide.

    I’m not able to reproduce the problem you’ve reported by simply compiling a shader with this statement as the first shader line.

    Therefore we would need more input from you to investigate where can cause the problem you’re experiencing.

    If you can please report us the OS and installation type you had for the 2.2 emulator.

    Could you share a short snippet of your app code and the exact shader source that generates the problem?

    Is the log output the only symptom you have or is there any glGetError-reported code at glCompileShader function call?

    This type of error I would expect you to have when running 3.1 shaders on older (prior 2.0) emulator version. Can you share with us your output from glGetString(GL_RENDERER)?

    Are there any particular environment variables you’ve adopted while running your app with emulator?

    Regards,

    Adam

  • Adam Charytoniuk

    Hi Sunil,

    thanks for details, it helped a lot in finding the actual issue.

    The #version 310 es is supported and your shaders should be correctly compiled (means — not error flag set), linked and can be used to run GL ES 3.1 programs on the Emulator.

    However, there is misleading log message for this case only (version 310 es), which you’ve observed.

    We’ve captured this one issue and there will be a fix for it making next release free from the inconvenience.

    As a work-around, please take GL_NO_ERROR returned from glGetError() in the first place as indication whether shader compilation succeeded, and a bit less rely on text log analysis, if possible for the time being.

    If you have ES 3.1 shader that set an error code on compilation attempt, then please have a look to the log to see whether the reason of it is indicated there. Don’t hesitate to share your concerns if any expected language feature seems to be unsupported.

    These two lines you can ignore for now:

    Error: 0:1: P0007: Language version ‘310’ unknown, this compiler only supports up to version ‘300 es’

    Error: 0:1: P0007: Unexpected text found after #version directive

    The shader compilation results and the support for ES 3.1 language features in the Emulator have been tested with official conformance tests suite therefore I’m convinced you should be able to use the Emulator productively. However, the exact compilation log content, as vendor specific — was not part of the that detailed check

    So, well spotted!

    Thanks,

    Adam

  • SUNIL

    Hi Adam,

    Built in function ‘mix’ is not working even for very basic example of mixing colors from two textures., it works if I remove outColor = mix(texture(tex1, texOut),texture(tex2,texOut),0.5f); by outColor = texture(tex1, texOut); It means problem lies with ‘mix’ function only.

    ———————————————-

    #version 310 es

    precision highp float;

    in vec3 vv3colour;

    in vec2 texOut;

    out vec4 outColor;

    uniform sampler2D tex1;

    uniform sampler2D tex2;

    void main() {

      outColor = mix(texture(tex1, texOut),texture(tex2,texOut),0.5f);

    }

    —————————————-

    In another case where I can not share other share shader codes, I created sample fragment shader to reproduce. It seems mix(vec4,vec4,float) is not working and gives following error while linking

    error C1115: unable to find compatible overloaded function «mix(vec3, vec3, float)» as shared in my above post.

    ————————————————-

    #version 310 es

    precision highp float;

    in vec3 vv3colour;

    out vec4 outColor;

    void main() {

      outColor = mix(vec4(vv3colour,1.0),vec4(0.0,0.0,0.0,1.0),1.0);

    }

    —————————————————

    Please let me know if it helps, and you can run above shaders successfully.

  • Jacek Kubacki

Содержание

  1. Minecraft Forums
  2. [Shader issue] Invalid Program error trying to run shaders with OptiFine for 1.11.2
  3. [Shaders] Error: Invalid program «gbuffers_ #5909
  4. Comments
  5. Description of Issue
  6. Steps to Reproduce
  7. OptiFine Version
  8. Installation Method
  9. Fabric/Forge Version
  10. OptiFabric Version
  11. Other Installed Mods
  12. Log Files/Crash Reports
  13. F3 Debug Screenshot
  14. Prior Testing
  15. Additional Information
  16. Minecraft Forums
  17. Shader Pack not working!

Minecraft Forums

[Shader issue] Invalid Program error trying to run shaders with OptiFine for 1.11.2

Hey all. I’m running into a bit of a problem trying to get my shaders to work. When I try to load a shader in a world I’m playing on, I get this «invalid program» error, and nothing looks any different. The leaves on the trees billow and the water sometimes turns clear, but nothing else. This has happened with a variety of different shaders, including SEUS, BSL, Kuda, and Continuum, all the latest versions.

Windows 8.1 64 bit, 8 gigs RAM

NVIDIA GeForce GTX 850m

From what I understand this isn’t an uncommon problem. I researched it comprehensively before posting, and none of the solutions worked for me. Here’s what I have tried so far:

Reinstalling the Appdata ,minecraft folder (as well as OptiFine)

Updating GPU drivers

Downgrading GPU drivers

Opening «composite1.fsh» with notepad++ and editing out a certain line (recommended several times, could not find any of the lines with or without ctrl f)

Minecraft and OptiFine have both been installed at 1.11.2 consistently.

Many people said that it’s a driver problem, which is why I tried updating my GPU drivers; however, it’s also been alleged that one of the recent updates screwed up shaders and that I should roll back, so I downloaded the earliest one they had on their site, which did not work.

I’d appreciate any input on the matter and thanks in advance for your considerations.

Источник

[Shaders] Error: Invalid program «gbuffers_ #5909

Description of Issue

Invalid Program shaders errors
«gbuffers_basic»
«gbuffers_textured»
«gbuffers_terrain»
«gbuffers_block»
«gbuffers_entities»
«gbuffers_entities_glowing»
«gbuffers_hand»
«gbuffers_weather»
«gbuffers_water»

Steps to Reproduce

using BSL shaders, had tested multiple versions of the shader itself to see if that was the problem, but using the current 8.0.01, and previous v 8.0 that I had working fine in minecraft 1.16.5, both show the same message and do not display correctly

OptiFine Version

pre 24, but also has been the same issue using every pre version that had shaders

Installation Method

used the installer

Fabric/Forge Version

fabric 0.7.3 with api 0.34.9
though running through optifine instead has the problem still

OptiFabric Version

Other Installed Mods

custom skin loader
death controls
flytrelib
inventory pause
mod menu
respawnable pets
voxelmap

running without the mods still doesn’t fix the issue though

Log Files/Crash Reports

F3 Debug Screenshot

Prior Testing

happens every time shader is loaded using optifine, other mods or not
specifically BSL shader

Additional Information

The text was updated successfully, but these errors were encountered:

this info is for sp614x:
the error comes from the fact, that bsl uses the same shader files for vertex and fragment shaders which causes your shader patching to include inputs in the fragment shader, which are only meant for the vertex shader.
to be exact they are the following:

from these in ivec2 UV1; causes the compile error, since integer inputs cant be interpolated between vertices and need a ‘flat’ qualifier.
the NVIDIA driver seems to ignore these since they are not actually used in the final shader, but AMD seems to not do that.
to fix the problem, you should only add these inputs to the .vsh shaders, where they are actually needed.
this also causes the shader to fail to compile with intel.

Источник

Minecraft Forums

Shader Pack not working!

Ok, so I downloaded a shader pack from here:

And then downloaded the shaders mod from here:

The installer successfully ran and the profile appeared in Minecraft (Minecraft WAS NOT open during the install, and neither was the launcher). I then proceeded to change the name of the profile and change the game directory (for organization purposes), put the shader pack in the folder, equipped the shader pack, and created a new world inside the new directory. The world loads. Minecraft stops responding for a minute. The achievement bar appears BEFORE the game is done loading (during the «Building Terrain» stage, or something like that). The world loads. Black void. Minutes later, still black void. 4 chat messages pop up.

Error : Invalid program gbuffers_textured

Error : Invalid program gbuffers_water

Error : Invalid program gbuffers_hand

Error : Invalid program composite

Error : Invalid program composite2

Error : Invalid program composite3

After a while, I just quit. What’s wrong, and how can I fix it?

[16:28:19] [main/INFO]: Loading tweak class name shadersmod.launch.SMCTweaker
[16:28:19] [main/INFO]: Using primary tweak class name shadersmod.launch.SMCTweaker
[16:28:19] [main/INFO]: Calling tweak class shadersmod.launch.SMCTweaker
[16:28:19] [main/INFO]: Launching wrapped minecraft
[16:28:19] [Client thread/INFO]: Setting user: Ptolemy2002
[16:28:21] [Client thread/WARN]: Skipping bad option: lastServer:
[16:28:21] [Client thread/INFO]: LWJGL Version: 2.9.4
[16:28:22] [Client thread/INFO]: Reloading ResourceManager: Default
[16:28:23] [Sound Library Loader/INFO]: Starting up SoundSystem.
[16:28:23] [Thread-6/INFO]: Initializing LWJGL OpenAL
[16:28:23] [Thread-6/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[16:28:23] [Thread-6/INFO]: OpenAL initialized.
[16:28:23] [Sound Library Loader/INFO]: Sound engine started
[16:28:26] [Client thread/INFO]: Created: 1024×512 textures-atlas
[16:28:33] [Client thread/INFO]: Realms library version == 1.10.16
[16:28:33] [MCO Compatability Checker #1/INFO]: Realms is available for this user
[16:29:15] [Server thread/INFO]: Starting integrated minecraft server version 1.11.2
[16:29:15] [Server thread/INFO]: Generating keypair
[16:29:16] [Server thread/INFO]: Preparing start region for level 0
[16:29:17] [Server thread/INFO]: Preparing spawn area: 6%
[16:29:18] [Server thread/INFO]: Preparing spawn area: 11%
[16:29:19] [Server thread/INFO]: Preparing spawn area: 18%
[16:29:20] [Server thread/INFO]: Preparing spawn area: 27%
[16:29:21] [Server thread/INFO]: Preparing spawn area: 38%
[16:29:22] [Server thread/INFO]: Preparing spawn area: 49%
[16:29:23] [Server thread/INFO]: Preparing spawn area: 58%
[16:29:24] [Server thread/INFO]: Preparing spawn area: 68%
[16:29:25] [Server thread/INFO]: Preparing spawn area: 79%
[16:29:26] [Server thread/INFO]: Preparing spawn area: 89%
[16:29:28] [Server thread/INFO]: Changing view distance to 12, from 10
[16:29:28] [Server thread/INFO]: Ptolemy2002[local:E:0a18cf3e] logged in with entity id 589 at (174.5, 90.0, 253.5)
[16:29:28] [Server thread/INFO]: Ptolemy2002 joined the game
[16:29:30] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_textured
[16:29:30] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_water
[16:29:30] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_hand
[16:29:30] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite
[16:29:31] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite2
[16:29:31] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite3
[16:29:33] [Server thread/WARN]: Can’t keep up! Did the system time change, or is the server overloaded? Running 5672ms behind, skipping 113 tick(s)
[16:29:33] [Server thread/INFO]: Saving and pausing game.
[16:29:33] [Server thread/INFO]: Saving chunks for level ‘shader test’/Overworld
[16:29:34] [Server thread/INFO]: Saving chunks for level ‘shader test’/Nether
[16:29:34] [Server thread/INFO]: Saving chunks for level ‘shader test’/The End
[16:30:50] [Client thread/INFO]: Stopping!
[16:30:50] [Client thread/INFO]: SoundSystem shutting down.
[16:30:50] [Server thread/INFO]: Stopping server
[16:30:50] [Server thread/INFO]: Saving players
[16:30:50] [Server thread/INFO]: Saving worlds
[16:30:50] [Server thread/INFO]: Saving chunks for level ‘shader test’/Overworld
[16:30:50] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com
[16:30:50] [Server thread/INFO]: Saving chunks for level ‘shader test’/Nether
[16:30:50] [Server thread/INFO]: Saving chunks for level ‘shader test’/The End

Shaders Mod log

[SMC INF]ShadersMod 2.6.1
[SMC FNE]transforming bes bes
[SMC FNE]transforming bzb bzb
[SMC FNE]transforming cdb cdb
[SMC FNT] set activeTexUnit
[SMC FNE]transforming byp byp
[SMC FNE]transforming byo byo
[SMC FNE]transforming byy byy
[SMC FNT] loadRes
[SMC FNT] loadRes
[SMC FNT] allocateTextureMap
[SMC FNT] setSprite setIconName
[SMC FNT] uploadTexSubForLoadAtlas
[SMC FNE]transforming bza bza
[SMC FNE]transforming bpz bpz
[SMC FNE]transforming bpy bpy
[SMC FNE]transforming bzh bzh
[SMC FNE]transforming bzj bzj
[SMC FNR] patching method bzj.a(Lbzk;)Lbzj;
[SMC FNE]transforming byv byv
[SMC FNR] loadSimpleTexture
[SMC INF]ShadersMod version : 2.6.1
OpenGL Version : 3.3.0
Vendor : NVIDIA Corporation
Renderer : Quadro NVS 290/PCIe/SSE2
Capabilities 2.0 2.1 3.0 3.2 —
GL_MAX_DRAW_BUFFERS = 8
GL_MAX_COLOR_ATTACHMENTS_EXT = 8
GL_MAX_TEXTURE_IMAGE_UNITS = 32
[SMC INF]Load ShadersMod configuration.
[SMC INF]Did not load shaderpack.
[SMC FNE]transforming byz byz
[SMC FNE]transforming brl brl
[SMC FNR] patch method brl.a(Lbrh;Lbyz;Lcv;[FLcbi;Lbrg;Z)[I
[SMC FNR] patch method brl.a([IIILorg/lwjgl/util/vector/Vector3f;ILbyz;Lbrh;)V
[SMC FNR] patch method brl.a([I)Lcv;
[SMC FNR] patch method brl.a([ILcv;)V
[SMC INF]allocateTextureMap 4 1024 512
[SMC FNE]transforming brk brk
[SMC FNR] patch method brk.f()V
[SMC FNE]transforming bur bur
[SMC FNE]transforming bus bus
[SMC FNR] conditionally skip default shadow
[SMC FNE]transforming bni bni
[SMC FNE]transforming bng bng
[SMC FNE]transforming bma bma
[SMC FNE]transforming bvg bvg
[SMC FNE]transforming bqe bqe
[SMC FNR] patch method bqe.b(FI)V
[SMC FNR] patch method bqe.h()V
[SMC FNR] patch method bqe.i()V
[SMC FNR] patch method bqe.b(FJ)V
[SMC FNR] patch method bqe.a(IFJ)V
[SMC FNR] patch method bqe.a(Lbqm;FIDDD)V
[SMC FNR] patch method bqe.h(F)V
[SMC FNR] patch method bqe.a(IF)V
[SMC FNR] patch method bqe.a(FFFF)Ljava/nio/FloatBuffer;
[SMC FNE]transforming bra bra
[SMC FNE]transforming brc brc
[SMC FNR] patch method brc.a(Latl;[ILcv;[FLjava/util/BitSet;)V
[SMC FNE]transforming bqm bqm
[SMC FNR] patch method bqm.a(Lsn;Lbtl;F)V
[SMC FNR] patch method bqm.a(Lsn;DLbtl;IZ)V
[SMC FNR] patch method bqm.a(Lajk;)V
[SMC FNR] patch method bqm.a(FI)V
[SMC FNR] patch method bqm.u()V
[SMC FNR] patch method bqm.v()V
[SMC FNR] patch method bqm.a(Laay;Lbdu;IF)V
[SMC FNE]transforming bqt bqt
[SMC FNR] patch method bqt.a()V
[SMC FNE]transforming bhi bhi
[SMC INF] method bhi. (Lbho;Lbeu;)V
[SMC INF] method bhi.b()V
[SMC INF] patching method b()V
[SMC FNT] decrease language button size
[SMC FNT] add shaders button
[SMC INF] method bhi.a(Lrg;)Ljava/lang/String;
[SMC INF] method bhi.a(ZI)V
[SMC INF] method bhi.a(CI)V
[SMC INF] method bhi.a(Lbfm;)V
[SMC INF] patching method a(Lbfm;)V
[SMC FNT] shaders button action
[SMC INF] method bhi.a(IIF)V
[SMC INF] method bhi. ()V
[SMC INF]Loaded shaderpack.
[SMC INF]Loaded shaderpack.
[SMC INF]Loaded shaderpack.
[SMC INF]Loaded shaderpack.
[SMC INF]Save ShadersMod configuration.
[SMC FNE]transforming bsj bsj
[SMC FNR] patch method bsj.a(DDDDDDII[FDD)V
[SMC FNE]transforming bsz bsz
[SMC FNE]transforming bqa bqa
[SMC INF]Info log: /shaders/gbuffers_basic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_basic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_basic loaded
[SMC INF]Info log: /shaders/gbuffers_textured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_textured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[SMC SEVERE][Shaders] Error : Invalid program gbuffers_textured
[SMC INF]Info log: /shaders/gbuffers_textured_lit.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_textured_lit.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_textured_lit loaded
[SMC INF]Info log: /shaders/gbuffers_skybasic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/gbuffers_skybasic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_skybasic loaded
[SMC INF]Info log: /shaders/gbuffers_skytextured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/gbuffers_skytextured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_skytextured loaded
[SMC INF]Info log: /shaders/gbuffers_terrain.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_terrain.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_terrain loaded
[SMC INF]Info log: /shaders/gbuffers_water.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_water.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(280) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[SMC SEVERE][Shaders] Error : Invalid program gbuffers_water
[SMC INF]Info log: /shaders/gbuffers_entities.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_entities.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_entities loaded
[SMC INF]Info log: /shaders/gbuffers_hand.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(39) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_hand.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(232) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[SMC SEVERE][Shaders] Error : Invalid program gbuffers_hand
[SMC INF]Info log: /shaders/gbuffers_weather.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/gbuffers_weather.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program gbuffers_weather loaded
[SMC INF]Info log: /shaders/composite.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Noise texture enabled
[SMC INF]Noise texture resolution: 1024
[SMC INF]Info log: /shaders/composite.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(160) : error C1059: non constant expression in initialization

[SMC SEVERE][Shaders] Error : Invalid program composite
[SMC INF]Info log: /shaders/composite1.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Noise texture enabled
[SMC INF]Noise texture resolution: 1024
[SMC INF]Info log: /shaders/composite1.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program composite1 loaded
[SMC INF]Info log: /shaders/composite2.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Shadow map resolution: 4096
[SMC INF]Shadow map distance: 140.0
[SMC INF]shadowHardwareFiltering0
[SMC INF]Sun path rotation: -40.0f
[SMC INF]Noise texture enabled
[SMC INF]Noise texture resolution: 1024
[SMC INF]Info log: /shaders/composite2.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(1887) : warning C7547: extension GL_ARB_gpu_shader5 not supported in profile gp4fp
0(2033) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2108) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2109) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2161) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2165) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2169) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2173) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2177) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2181) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2185) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2189) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2193) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2197) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2201) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2205) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2209) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2213) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2217) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2221) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2225) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2233) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2237) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2241) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2245) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2249) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2268) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»

[SMC SEVERE][Shaders] Error : Invalid program composite2
[SMC INF]Info log: /shaders/composite3.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/composite3.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(712) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[SMC SEVERE][Shaders] Error : Invalid program composite3
[SMC INF]Info log: /shaders/composite4.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/composite4.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program composite4 loaded
[SMC INF]Info log: /shaders/composite5.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/composite5.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program composite5 loaded
[SMC INF]Info log: /shaders/final.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Info log: /shaders/final.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program final loaded
[SMC INF]Info log: /shaders/shadow.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[SMC INF]Info log: /shaders/shadow.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[SMC INF]Program shadow loaded
[SMC INF]Framebuffer created.
[SMC INF]Shadow framebuffer created.
[SMC INF]Reset world renderers
[SMC INF].
[SMC FNE]transforming byq byq
[SMC INF]Reset model renderers

Remember those versions that minecraft pranked us with? Specifically:

  • Minecraft 2.0
  • Minecraft 1.VR-Pre1
  • Snapshot 15w14a
  • Minecraft 3D

Those are still downloadable! Watch this video for 2.0:

To download the other ones you need to make a folder in the versions folder for minecraft and put the client and JSON file for the versions in there. They all need to be named the same aside from file extensions. Once you do that, you will be able to choose that version when making a new profile with the minecraft launcher.

15w14a is on this link:

1.RV-Pre1 is here:

Minecraft 3D is here:

  • Mathematical Dessert
  • Join Date: 4/29/2015
  • Posts: 328
  • Location: Alfheim
  • Minecraft: AhmiDarrow
  • Member Details

Just install Optifine instead of Shadermods, it’s automatically included and seems to run far more stable in 1.9+. I don’t think Shadersmod is even a standalone for any version 1.9+, think that is just for 1.8 and lower honestly.

  • The Meaning of Life, the Universe, and Everything.
  • Join Date: 2/11/2017
  • Posts: 662
  • Member Details

Just install Optifine instead of Shadermods, it’s automatically included and seems to run far more stable in 1.9+. I don’t think Shadersmod is even a standalone for any version 1.9+, think that is just for 1.8 and lower honestly.

Remember those versions that minecraft pranked us with? Specifically:

  • Minecraft 2.0
  • Minecraft 1.VR-Pre1
  • Snapshot 15w14a
  • Minecraft 3D

Those are still downloadable! Watch this video for 2.0:

To download the other ones you need to make a folder in the versions folder for minecraft and put the client and JSON file for the versions in there. They all need to be named the same aside from file extensions. Once you do that, you will be able to choose that version when making a new profile with the minecraft launcher.

15w14a is on this link:

1.RV-Pre1 is here:

Minecraft 3D is here:

  • The Meaning of Life, the Universe, and Everything.
  • Join Date: 2/11/2017
  • Posts: 662
  • Member Details

Ok, here is my minecraft log for the original error:

[22:20:59] [Client thread/INFO]: Setting user: Ptolemy2002
[22:21:01] [Client thread/INFO]: [OptiFine] *** Reflector Forge ***
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$RenderFogEvent
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: akf.getWaterColorMultiplier
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.addDestroyEffects
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.addHitEffects
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.canCreatureSpawn
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.canRenderInLayer
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.doesSideBlockRendering
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getBedDirection
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getExtendedState
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getLightOpacity
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getLightValue
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getSoundType
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.hasTileEntity
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isAir
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isBed
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isBedFoot
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isSideSolid
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.canRiderInteract
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: sn.captureDrops
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: sn.capturedDrops
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.shouldRenderInPass
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.shouldRiderSit
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.getDurabilityForDisplay
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.getRGBDurabilityForDisplay
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.onEntitySwing
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.shouldCauseReequipAnimation
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.showDurabilityBar
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bro.handleItemState
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: adp.hasOverlay
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afy.getRecordResource
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.setKeyConflictContext
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.setKeyModifierAndCode
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.getKeyModifier
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sg.shouldRenderHUD
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sg.renderHUDEffect
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sh.isCurativeItem
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.canRenderBreaking
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.getRenderBoundingBox
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.hasFastRenderer
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.shouldRenderInPass
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bzk$b.preDraw
[22:21:01] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bzk$b.postDraw
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.countEntities
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.getPerWorldStorage
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.initCapabilities
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getCloudRenderer
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getSkyRenderer
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getWeatherRenderer
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.settings.KeyConflictContext
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.settings.KeyModifier
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.gui.NotificationModUpdateScreen
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.ScreenshotEvent
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress
[22:21:02] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load
[22:21:02] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla ***
[22:21:02] [Client thread/INFO]: LWJGL Version: 2.9.4
[22:21:02] [Client thread/INFO]: [OptiFine]
[22:21:02] [Client thread/INFO]: [OptiFine] OptiFine_1.11.2_HD_U_B8
[22:21:02] [Client thread/INFO]: [OptiFine] Build: 20170504-125337
[22:21:02] [Client thread/INFO]: [OptiFine] OS: Windows 7 (amd64) version 6.1
[22:21:02] [Client thread/INFO]: [OptiFine] Java: 1.8.0_25, Oracle Corporation
[22:21:02] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
[22:21:02] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.4
[22:21:02] [Client thread/INFO]: [OptiFine] OpenGL: Quadro NVS 290/PCIe/SSE2, version 3.3.0, NVIDIA Corporation
[22:21:02] [Client thread/INFO]: [OptiFine] OpenGL Version: 3.3.0
[22:21:02] [Client thread/INFO]: [OptiFine] Maximum texture size: 8192×8192
[22:21:02] [Thread-5/INFO]: [OptiFine] Checking for new version
[22:21:02] [Client thread/INFO]: [Shaders] ShadersMod version: 2.4.12
[22:21:02] [Client thread/INFO]: [Shaders] OpenGL Version: 3.3.0
[22:21:02] [Client thread/INFO]: [Shaders] Vendor: NVIDIA Corporation
[22:21:02] [Client thread/INFO]: [Shaders] Renderer: Quadro NVS 290/PCIe/SSE2
[22:21:02] [Client thread/INFO]: [Shaders] Capabilities: 2.0 2.1 3.0 3.2 —
[22:21:02] [Client thread/INFO]: [Shaders] GL_MAX_DRAW_BUFFERS: 8
[22:21:02] [Client thread/INFO]: [Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT: 8
[22:21:02] [Client thread/INFO]: [Shaders] GL_MAX_TEXTURE_IMAGE_UNITS: 32
[22:21:02] [Client thread/INFO]: [Shaders] Load ShadersMod configuration.
[22:21:02] [Client thread/INFO]: [Shaders] Loaded shaderpack: Chocapic13 V6 Extreme.zip
[22:21:02] [Client thread/INFO]: [OptiFine] [Shaders] Worlds: -1, 1
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LEAVES
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 18.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 18
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_VINES
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 106.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 106
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_TALLGRASS
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 31.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 31
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_DANDELION
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 37.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 37
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_ROSE
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 38.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 38
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_WHEAT
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 59.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 59
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LILYPAD
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 111.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 111
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_FIRE
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 51.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 51
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LAVAFLOWING
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 10.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 10
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LAVASTILL
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 11.0
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 11
[22:21:02] [Client thread/WARN]: [OptiFine] Ambiguous shader option: SHADOW_MAP_BIAS
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh: 0.8
[22:21:02] [Client thread/WARN]: [OptiFine] — in gbuffers_water.fsh: 0.80
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_basic.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_textured.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_textured_lit.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_clouds.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_terrain.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_damagedblock.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_water.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_entities.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_hand.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: VIGNETTE_END
[22:21:03] [Client thread/WARN]: [OptiFine] — in final.fsh: 1.25
[22:21:03] [Client thread/WARN]: [OptiFine] — in world-1/final.fsh: 1.2
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_basic.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_textured.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_textured_lit.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_clouds.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_terrain.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_damagedblock.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_water.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh, world1/gbuffers_water.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_entities.fsh: 1024
[22:21:03] [Thread-5/INFO]: [OptiFine] Version found: B9
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[22:21:03] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh, world1/gbuffers_water.fsh, world1/gbuffers_entities.fsh: 4096
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_hand.fsh: 1024
[22:21:03] [Client thread/WARN]: [OptiFine] Ambiguous shader option: VIGNETTE_END
[22:21:03] [Client thread/WARN]: [OptiFine] — in final.fsh, world-1/final.fsh: 1.25
[22:21:03] [Client thread/WARN]: [OptiFine] — in world1/final.fsh: 1.2
[22:21:03] [Client thread/INFO]: Reloading ResourceManager: Default
[22:21:03] [Client thread/INFO]: [OptiFine] *** Reloading textures ***
[22:21:03] [Client thread/INFO]: [OptiFine] Resource packs: Default
[22:21:04] [Sound Library Loader/INFO]: Starting up SoundSystem.
[22:21:04] [Thread-6/INFO]: Initializing LWJGL OpenAL
[22:21:04] [Thread-6/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[22:21:05] [Thread-6/INFO]: OpenAL initialized.
[22:21:05] [Sound Library Loader/INFO]: Sound engine started
[22:21:05] [Client thread/INFO]: [OptiFine] Multitexture: false
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/0_glass_white/glass_pane_white.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/0_glass_white/glass_white.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/10_glass_purple/glass_pane_purple.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/10_glass_purple/glass_purple.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/11_glass_blue/glass_blue.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/11_glass_blue/glass_pane_blue.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/12_glass_brown/glass_brown.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/12_glass_brown/glass_pane_brown.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/13_glass_green/glass_green.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/13_glass_green/glass_pane_green.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/14_glass_red/glass_pane_red.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/14_glass_red/glass_red.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/15_glass_black/glass_black.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/15_glass_black/glass_pane_black.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/1_glass_orange/glass_orange.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/1_glass_orange/glass_pane_orange.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/2_glass_magenta/glass_magenta.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/2_glass_magenta/glass_pane_magenta.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/3_glass_light_blue/glass_light_blue.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/3_glass_light_blue/glass_pane_light_blue.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/4_glass_yellow/glass_pane_yellow.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/4_glass_yellow/glass_yellow.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/5_glass_lime/glass_lime.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/5_glass_lime/glass_pane_lime.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/6_glass_pink/glass_pane_pink.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/6_glass_pink/glass_pink.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/7_glass_gray/glass_gray.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/7_glass_gray/glass_pane_gray.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/8_glass_silver/glass_pane_silver.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/8_glass_silver/glass_silver.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/9_glass_cyan/glass_cyan.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/9_glass_cyan/glass_pane_cyan.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/bookshelf.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/glass.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/glasspane.properties
[22:21:05] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/sandstone.properties
[22:21:05] [Client thread/INFO]: [OptiFine] Multipass connected textures: false
[22:21:05] [Client thread/INFO]: [OptiFine] BetterGrass: Parsing default configuration optifine/bettergrass.properties
[22:21:06] [Client thread/INFO]: Created: 1024×512 textures-atlas
[22:21:06] [Client thread/INFO]: [Shaders] allocateTextureMap 0 1024 512
[22:21:08] [Client thread/INFO]: [OptiFine] *** Reloading custom textures ***
[22:21:22] [Client thread/INFO]: [Shaders] Save ShadersMod configuration.
[22:21:27] [Server thread/INFO]: Starting integrated minecraft server version 1.11.2
[22:21:27] [Server thread/INFO]: Generating keypair
[22:21:27] [Server thread/INFO]: Preparing start region for level 0
[22:21:28] [Server thread/INFO]: Preparing spawn area: 22%
[22:21:29] [Server thread/WARN]: Keeping entity minecraft:rabbit that already exists with UUID 236d761d-e9e5-47e2-8788-cfcf70ec850b
[22:21:30] [Server thread/INFO]: Ptolemy2002[local:E:1a84dc91] logged in with entity id 879 at (-411.5, 71.0, 449.5)
[22:21:30] [Server thread/INFO]: Ptolemy2002 joined the game
[22:21:31] [Client thread/INFO]: [CHAT] A new §eOptiFine§f version is available: §eHD Ultra B9§f
[22:21:31] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_basic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:31] [Client thread/INFO]: [Shaders] composite format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gaux2 format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gaux3 format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gaux4 format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gcolor format: RGBA8
[22:21:31] [Client thread/INFO]: [Shaders] gdepth format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gnormal format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] composite format: R11F_G11F_B10F
[22:21:31] [Client thread/INFO]: [Shaders] gaux1 format: RGBA16
[22:21:31] [Client thread/INFO]: [Shaders] gaux2 format: R11F_G11F_B10F
[22:21:31] [Client thread/INFO]: [Shaders] gaux3 format: R11F_G11F_B10F
[22:21:31] [Client thread/INFO]: [Shaders] gaux4 format: R11F_G11F_B10F
[22:21:31] [Server thread/INFO]: Saving and pausing game.
[22:21:31] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[22:21:31] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_basic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:31] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_basic.vsh, /shaders/gbuffers_basic.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:31] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_basic
[22:21:31] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[22:21:32] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[22:21:32] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_textured.fsh
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] Error linking program: 11
[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_textured.vsh, /shaders/gbuffers_textured.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_textured»
[22:21:32] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_textured»
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured_lit.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured_lit.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_textured_lit.vsh, /shaders/gbuffers_textured_lit.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_textured_lit
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skybasic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skybasic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_skybasic.vsh, /shaders/gbuffers_skybasic.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_skybasic
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skytextured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skytextured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_skytextured.vsh, /shaders/gbuffers_skytextured.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_skytextured
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_terrain.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/INFO]: [Shaders] composite format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gaux2 format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gaux3 format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gaux4 format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gcolor format: RGBA8
[22:21:32] [Client thread/INFO]: [Shaders] gdepth format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gnormal format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] composite format: R11F_G11F_B10F
[22:21:32] [Client thread/INFO]: [Shaders] gaux1 format: RGBA16
[22:21:32] [Client thread/INFO]: [Shaders] gaux2 format: R11F_G11F_B10F
[22:21:32] [Client thread/INFO]: [Shaders] gaux3 format: R11F_G11F_B10F
[22:21:32] [Client thread/INFO]: [Shaders] gaux4 format: R11F_G11F_B10F
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_terrain.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_terrain.vsh, /shaders/gbuffers_terrain.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_terrain
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_water.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_water.fsh
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_water.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(280) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] Error linking program: 15
[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_water.vsh, /shaders/gbuffers_water.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(280) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_water»
[22:21:32] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_water»
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_entities.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_entities.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_entities.vsh, /shaders/gbuffers_entities.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_entities
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_hand.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(39) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_hand.fsh
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_hand.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(232) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] Error linking program: 16
[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_hand.vsh, /shaders/gbuffers_hand.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(39) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(232) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:32] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_hand»
[22:21:32] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_hand»
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_weather.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_weather.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_weather.vsh, /shaders/gbuffers_weather.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_weather
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:32] [Client thread/INFO]: [Shaders] Noise texture enabled
[22:21:32] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[22:21:32] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite.fsh
[22:21:32] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(160) : error C1059: non constant expression in initialization

[22:21:33] [Client thread/ERROR]: [Shaders] Error linking program: 17
[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite.vsh, /shaders/composite.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(160) : error C1059: non constant expression in initialization

[22:21:33] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite»
[22:21:33] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite»
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite1.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Noise texture enabled
[22:21:33] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite1.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite1.vsh, /shaders/composite1.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Program loaded: composite1
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite2.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Shadow map resolution: 4096
[22:21:33] [Client thread/INFO]: [Shaders] Shadow map distance: 140.0
[22:21:33] [Client thread/INFO]: [Shaders] shadowHardwareFiltering0
[22:21:33] [Client thread/INFO]: [Shaders] Sun path rotation: -40.0f
[22:21:33] [Client thread/INFO]: [Shaders] Noise texture enabled
[22:21:33] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[22:21:33] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite2.fsh
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite2.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(1887) : warning C7547: extension GL_ARB_gpu_shader5 not supported in profile gp4fp
0(2033) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2108) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2109) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2161) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2165) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2169) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2173) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2177) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2181) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2185) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2189) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2193) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2197) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2201) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2205) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2209) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2213) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2217) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2221) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2225) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2233) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2237) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2241) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2245) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2249) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2268) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»

[22:21:33] [Client thread/ERROR]: [Shaders] Error linking program: 18
[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite2.vsh, /shaders/composite2.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(1887) : warning C7547: extension GL_ARB_gpu_shader5 not supported in profile gp4fp
0(2033) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2108) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2109) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2161) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2165) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2169) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2173) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2177) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2181) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2185) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2189) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2193) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2197) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2201) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2205) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2209) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2213) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2217) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2221) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2225) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2233) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2237) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2241) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2245) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2249) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2268) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»

[22:21:33] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite2»
[22:21:33] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite2»
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite3.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] gaux1 mipmap enabled
[22:21:33] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite3.fsh
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite3.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(712) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:33] [Client thread/ERROR]: [Shaders] Error linking program: 18
[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite3.vsh, /shaders/composite3.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(712) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[22:21:33] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite3»
[22:21:33] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite3»
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite4.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] composite mipmap enabled
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite4.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite4.vsh, /shaders/composite4.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Program loaded: composite4
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite5.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite5.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/composite5.vsh, /shaders/composite5.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Program loaded: composite5
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/final.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/final.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/final.vsh, /shaders/final.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Program loaded: final
[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/shadow.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[22:21:33] [Client thread/INFO]: [Shaders] Shader info log: /shaders/shadow.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Info log: /shaders/shadow.vsh, /shaders/shadow.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[22:21:33] [Client thread/INFO]: [Shaders] Program loaded: shadow
[22:21:33] [Client thread/INFO]: [Shaders] usedColorBuffers: 8
[22:21:33] [Client thread/INFO]: [Shaders] usedDepthBuffers: 2
[22:21:33] [Client thread/INFO]: [Shaders] usedShadowColorBuffers: 0
[22:21:33] [Client thread/INFO]: [Shaders] usedShadowDepthBuffers: 2
[22:21:33] [Client thread/INFO]: [Shaders] usedColorAttachs: 8
[22:21:33] [Client thread/INFO]: [Shaders] usedDrawBuffers: 2
[22:21:33] [Client thread/INFO]: [Shaders] Framebuffer created.
[22:21:34] [Client thread/INFO]: [Shaders] Shadow framebuffer created.
[22:21:34] [Client thread/INFO]: [Shaders] Reset world renderers
[22:21:40] [Client thread/INFO]: [Shaders] Reset model renderers
[22:21:44] [Server thread/INFO]: Saving and pausing game.
[22:21:44] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[22:21:44] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[22:21:44] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[22:21:56] [Client thread/INFO]: Stopping!
[22:21:56] [Client thread/INFO]: SoundSystem shutting down.
[22:21:56] [Server thread/INFO]: Stopping server
[22:21:56] [Server thread/INFO]: Saving players
[22:21:56] [Server thread/INFO]: Saving worlds
[22:21:56] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[22:21:56] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[22:21:56] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[22:21:56] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com

For some reason, I couldn’t find the shader pack log like before.

Remember those versions that minecraft pranked us with? Specifically:

  • Minecraft 2.0
  • Minecraft 1.VR-Pre1
  • Snapshot 15w14a
  • Minecraft 3D

Those are still downloadable! Watch this video for 2.0:

To download the other ones you need to make a folder in the versions folder for minecraft and put the client and JSON file for the versions in there. They all need to be named the same aside from file extensions. Once you do that, you will be able to choose that version when making a new profile with the minecraft launcher.

15w14a is on this link:

1.RV-Pre1 is here:

Minecraft 3D is here:

  • Portal Expert
  • Join Date: 9/28/2012
  • Posts: 5,446
  • Minecraft: urielsalis
  • Member Details

0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Op in #minecrafthelp, JIRA Helper in bugs.mojang.com, Chat moderator in Minecraft Forums, Twitch/Mixer mod

If I helped you, dont forget to click the thanks arrow!

  • The Meaning of Life, the Universe, and Everything.
  • Join Date: 2/11/2017
  • Posts: 662
  • Member Details

0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Remember those versions that minecraft pranked us with? Specifically:

  • Minecraft 2.0
  • Minecraft 1.VR-Pre1
  • Snapshot 15w14a
  • Minecraft 3D

Those are still downloadable! Watch this video for 2.0:

To download the other ones you need to make a folder in the versions folder for minecraft and put the client and JSON file for the versions in there. They all need to be named the same aside from file extensions. Once you do that, you will be able to choose that version when making a new profile with the minecraft launcher.

15w14a is on this link:

1.RV-Pre1 is here:

Minecraft 3D is here:

  • Portal Expert
  • Join Date: 9/28/2012
  • Posts: 5,446
  • Minecraft: urielsalis
  • Member Details

Op in #minecrafthelp, JIRA Helper in bugs.mojang.com, Chat moderator in Minecraft Forums, Twitch/Mixer mod

If I helped you, dont forget to click the thanks arrow!

  • The Meaning of Life, the Universe, and Everything.
  • Join Date: 2/11/2017
  • Posts: 662
  • Member Details

After installing and making a new world, the problem still remained.
Shaders Mod Log

[14:35:57] [main/INFO]: Loading tweak class name shadersmod.launch.SMCTweaker
[14:35:57] [main/INFO]: Using primary tweak class name shadersmod.launch.SMCTweaker
[14:35:57] [main/INFO]: Calling tweak class shadersmod.launch.SMCTweaker
[14:35:57] [main/INFO]: Launching wrapped minecraft
[14:35:58] [Client thread/INFO]: Setting user: Ptolemy2002
[14:36:00] [Client thread/WARN]: Skipping bad option: lastServer:
[14:36:00] [Client thread/INFO]: LWJGL Version: 2.9.4
[14:36:00] [Client thread/INFO]: Reloading ResourceManager: Default
[14:36:01] [Sound Library Loader/INFO]: Starting up SoundSystem.
[14:36:01] [Thread-6/INFO]: Initializing LWJGL OpenAL
[14:36:01] [Thread-6/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[14:36:01] [Thread-6/INFO]: OpenAL initialized.
[14:36:02] [Sound Library Loader/INFO]: Sound engine started
[14:36:05] [Client thread/INFO]: Created: 1024×512 textures-atlas
[14:36:17] [Client thread/INFO]: Deleting level shader test
[14:36:17] [Client thread/INFO]: Attempt 1.
[14:36:25] [Server thread/INFO]: Starting integrated minecraft server version 1.11.2
[14:36:25] [Server thread/INFO]: Generating keypair
[14:36:26] [Server thread/INFO]: Preparing start region for level 0
[14:36:27] [Server thread/INFO]: Preparing spawn area: 5%
[14:36:28] [Server thread/INFO]: Preparing spawn area: 10%
[14:36:29] [Server thread/INFO]: Preparing spawn area: 17%
[14:36:30] [Server thread/INFO]: Preparing spawn area: 25%
[14:36:31] [Server thread/INFO]: Preparing spawn area: 33%
[14:36:32] [Server thread/INFO]: Preparing spawn area: 42%
[14:36:33] [Server thread/INFO]: Preparing spawn area: 51%
[14:36:34] [Server thread/INFO]: Preparing spawn area: 60%
[14:36:35] [Server thread/INFO]: Preparing spawn area: 69%
[14:36:36] [Server thread/INFO]: Preparing spawn area: 79%
[14:36:37] [Server thread/INFO]: Preparing spawn area: 90%
[14:36:38] [Server thread/INFO]: Changing view distance to 12, from 10
[14:36:39] [Server thread/INFO]: Ptolemy2002[local:E:67f32bc7] logged in with entity id 799 at (224.5, 77.0, 226.5)
[14:36:39] [Server thread/INFO]: Ptolemy2002 joined the game
[14:36:40] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_textured
[14:36:40] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_water
[14:36:41] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program gbuffers_hand
[14:36:41] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite
[14:36:41] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite2
[14:36:41] [Client thread/INFO]: [CHAT] [Shaders] Error : Invalid program composite3
[14:36:44] [Server thread/INFO]: Saving and pausing game.
[14:36:44] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:36:45] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:36:45] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:36:45] [Server thread/WARN]: Can’t keep up! Did the system time change, or is the server overloaded? Running 6809ms behind, skipping 136 tick(s)
[14:36:57] [Server thread/WARN]: Can’t keep up! Did the system time change, or is the server overloaded? Running 2028ms behind, skipping 40 tick(s)
[14:36:59] [Server thread/INFO]: Saving and pausing game.
[14:36:59] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:37:00] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:37:00] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:37:11] [Client thread/INFO]: Stopping!
[14:37:11] [Client thread/INFO]: SoundSystem shutting down.
[14:37:11] [Server thread/INFO]: Stopping server
[14:37:11] [Server thread/INFO]: Saving players
[14:37:11] [Server thread/INFO]: Saving worlds
[14:37:11] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:37:11] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:37:11] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:37:11] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com

[14:40:56] [Client thread/INFO]: Setting user: Ptolemy2002
[14:40:58] [Client thread/INFO]: [OptiFine] *** Reflector Forge ***
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$RenderFogEvent
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: akf.getWaterColorMultiplier
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.addDestroyEffects
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.addHitEffects
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.canCreatureSpawn
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.canRenderInLayer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.doesSideBlockRendering
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getBedDirection
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getExtendedState
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getLightOpacity
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getLightValue
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.getSoundType
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.hasTileEntity
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isAir
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isBed
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isBedFoot
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: alu.isSideSolid
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.canRiderInteract
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: sn.captureDrops
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: sn.capturedDrops
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.shouldRenderInPass
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sn.shouldRiderSit
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.getDurabilityForDisplay
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.getRGBDurabilityForDisplay
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.onEntitySwing
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.shouldCauseReequipAnimation
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afh.showDurabilityBar
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bro.handleItemState
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: adp.hasOverlay
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: afy.getRecordResource
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.setKeyConflictContext
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.setKeyModifierAndCode
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bep.getKeyModifier
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sg.shouldRenderHUD
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sg.renderHUDEffect
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: sh.isCurativeItem
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.canRenderBreaking
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.getRenderBoundingBox
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.hasFastRenderer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: asc.shouldRenderInPass
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bzk$b.preDraw
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: bzk$b.postDraw
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.countEntities
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.getPerWorldStorage
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: ajs.initCapabilities
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getCloudRenderer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getSkyRenderer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: avf.getWeatherRenderer
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.settings.KeyConflictContext
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.settings.KeyModifier
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.gui.NotificationModUpdateScreen
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.ScreenshotEvent
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress
[14:40:58] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load
[14:40:58] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla ***
[14:40:58] [Client thread/INFO]: LWJGL Version: 2.9.4
[14:40:58] [Client thread/INFO]: [OptiFine]
[14:40:58] [Client thread/INFO]: [OptiFine] OptiFine_1.11.2_HD_U_B8
[14:40:58] [Client thread/INFO]: [OptiFine] Build: 20170504-125337
[14:40:58] [Client thread/INFO]: [OptiFine] OS: Windows 7 (amd64) version 6.1
[14:40:58] [Client thread/INFO]: [OptiFine] Java: 1.8.0_25, Oracle Corporation
[14:40:58] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
[14:40:58] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.4
[14:40:58] [Client thread/INFO]: [OptiFine] OpenGL: Quadro NVS 290/PCIe/SSE2, version 3.3.0, NVIDIA Corporation
[14:40:58] [Client thread/INFO]: [OptiFine] OpenGL Version: 3.3.0
[14:40:58] [Client thread/INFO]: [OptiFine] Maximum texture size: 8192×8192
[14:40:58] [Thread-5/INFO]: [OptiFine] Checking for new version
[14:40:58] [Client thread/INFO]: [Shaders] ShadersMod version: 2.4.12
[14:40:58] [Client thread/INFO]: [Shaders] OpenGL Version: 3.3.0
[14:40:58] [Client thread/INFO]: [Shaders] Vendor: NVIDIA Corporation
[14:40:58] [Client thread/INFO]: [Shaders] Renderer: Quadro NVS 290/PCIe/SSE2
[14:40:58] [Client thread/INFO]: [Shaders] Capabilities: 2.0 2.1 3.0 3.2 —
[14:40:58] [Client thread/INFO]: [Shaders] GL_MAX_DRAW_BUFFERS: 8
[14:40:58] [Client thread/INFO]: [Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT: 8
[14:40:58] [Client thread/INFO]: [Shaders] GL_MAX_TEXTURE_IMAGE_UNITS: 32
[14:40:58] [Client thread/INFO]: [Shaders] Load ShadersMod configuration.
[14:40:58] [Client thread/INFO]: [Shaders] Loaded shaderpack: Chocapic13 V6 Extreme.zip
[14:40:58] [Client thread/INFO]: [OptiFine] [Shaders] Worlds: -1, 1
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LEAVES
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 18.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 18
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_VINES
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 106.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 106
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_TALLGRASS
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 31.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 31
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_DANDELION
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 37.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 37
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_ROSE
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 38.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 38
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_WHEAT
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 59.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 59
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LILYPAD
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 111.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 111
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_FIRE
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 51.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 51
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LAVAFLOWING
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 10.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 10
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: ENTITY_LAVASTILL
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.vsh: 11.0
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_terrain.vsh: 11
[14:40:58] [Client thread/WARN]: [OptiFine] Ambiguous shader option: SHADOW_MAP_BIAS
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh: 0.8
[14:40:58] [Client thread/WARN]: [OptiFine] — in gbuffers_water.fsh: 0.80
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_basic.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_textured.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_textured_lit.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_clouds.fsh: 1024
[14:40:59] [Thread-5/INFO]: [OptiFine] Version found: B9
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_terrain.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_damagedblock.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_water.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_entities.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/gbuffers_hand.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: VIGNETTE_END
[14:40:59] [Client thread/WARN]: [OptiFine] — in final.fsh: 1.25
[14:40:59] [Client thread/WARN]: [OptiFine] — in world-1/final.fsh: 1.2
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_basic.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_textured.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_textured_lit.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_clouds.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_terrain.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_damagedblock.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_water.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh, world1/gbuffers_water.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_entities.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: shadowMapResolution
[14:40:59] [Client thread/WARN]: [OptiFine] — in gbuffers_textured.fsh, gbuffers_water.fsh, gbuffers_hand.fsh, composite2.fsh, world-1/gbuffers_basic.fsh, world-1/gbuffers_textured.fsh, world-1/gbuffers_textured_lit.fsh, world-1/gbuffers_clouds.fsh, world-1/gbuffers_terrain.fsh, world-1/gbuffers_damagedblock.fsh, world-1/gbuffers_water.fsh, world-1/gbuffers_entities.fsh, world-1/gbuffers_hand.fsh, world1/gbuffers_basic.fsh, world1/gbuffers_textured.fsh, world1/gbuffers_textured_lit.fsh, world1/gbuffers_clouds.fsh, world1/gbuffers_terrain.fsh, world1/gbuffers_damagedblock.fsh, world1/gbuffers_water.fsh, world1/gbuffers_entities.fsh: 4096
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/gbuffers_hand.fsh: 1024
[14:40:59] [Client thread/WARN]: [OptiFine] Ambiguous shader option: VIGNETTE_END
[14:40:59] [Client thread/WARN]: [OptiFine] — in final.fsh, world-1/final.fsh: 1.25
[14:40:59] [Client thread/WARN]: [OptiFine] — in world1/final.fsh: 1.2
[14:40:59] [Client thread/INFO]: Reloading ResourceManager: Default
[14:40:59] [Client thread/INFO]: [OptiFine] *** Reloading textures ***
[14:40:59] [Client thread/INFO]: [OptiFine] Resource packs: Default
[14:40:59] [Sound Library Loader/INFO]: Starting up SoundSystem.
[14:41:00] [Thread-6/INFO]: Initializing LWJGL OpenAL
[14:41:00] [Thread-6/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
[14:41:00] [Thread-6/INFO]: OpenAL initialized.
[14:41:00] [Sound Library Loader/INFO]: Sound engine started
[14:41:01] [Client thread/INFO]: [OptiFine] Multitexture: false
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/0_glass_white/glass_pane_white.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/0_glass_white/glass_white.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/10_glass_purple/glass_pane_purple.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/10_glass_purple/glass_purple.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/11_glass_blue/glass_blue.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/11_glass_blue/glass_pane_blue.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/12_glass_brown/glass_brown.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/12_glass_brown/glass_pane_brown.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/13_glass_green/glass_green.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/13_glass_green/glass_pane_green.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/14_glass_red/glass_pane_red.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/14_glass_red/glass_red.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/15_glass_black/glass_black.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/15_glass_black/glass_pane_black.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/1_glass_orange/glass_orange.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/1_glass_orange/glass_pane_orange.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/2_glass_magenta/glass_magenta.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/2_glass_magenta/glass_pane_magenta.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/3_glass_light_blue/glass_light_blue.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/3_glass_light_blue/glass_pane_light_blue.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/4_glass_yellow/glass_pane_yellow.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/4_glass_yellow/glass_yellow.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/5_glass_lime/glass_lime.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/5_glass_lime/glass_pane_lime.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/6_glass_pink/glass_pane_pink.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/6_glass_pink/glass_pink.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/7_glass_gray/glass_gray.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/7_glass_gray/glass_pane_gray.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/8_glass_silver/glass_pane_silver.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/8_glass_silver/glass_silver.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/9_glass_cyan/glass_cyan.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/9_glass_cyan/glass_pane_cyan.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/bookshelf.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/glass.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/glasspane.properties
[14:41:01] [Client thread/INFO]: [OptiFine] ConnectedTextures: mcpatcher/ctm/default/sandstone.properties
[14:41:01] [Client thread/INFO]: [OptiFine] Multipass connected textures: false
[14:41:01] [Client thread/INFO]: [OptiFine] BetterGrass: Parsing default configuration optifine/bettergrass.properties
[14:41:02] [Client thread/INFO]: Created: 1024×512 textures-atlas
[14:41:02] [Client thread/INFO]: [Shaders] allocateTextureMap 0 1024 512
[14:41:04] [Client thread/INFO]: [OptiFine] *** Reloading custom textures ***
[14:41:10] [Client thread/INFO]: Deleting level shader pack
[14:41:10] [Client thread/INFO]: Attempt 1.
[14:41:23] [Client thread/INFO]: [Shaders] Save ShadersMod configuration.
[14:41:36] [Server thread/INFO]: Starting integrated minecraft server version 1.11.2
[14:41:36] [Server thread/INFO]: Generating keypair
[14:41:37] [Server thread/INFO]: Preparing start region for level 0
[14:41:38] [Server thread/INFO]: Preparing spawn area: 5%
[14:41:39] [Server thread/INFO]: Preparing spawn area: 11%
[14:41:40] [Server thread/INFO]: Preparing spawn area: 18%
[14:41:41] [Server thread/INFO]: Preparing spawn area: 27%
[14:41:42] [Server thread/INFO]: Preparing spawn area: 35%
[14:41:43] [Server thread/INFO]: Preparing spawn area: 45%
[14:41:44] [Server thread/INFO]: Preparing spawn area: 55%
[14:41:45] [Server thread/INFO]: Preparing spawn area: 67%
[14:41:46] [Server thread/INFO]: Preparing spawn area: 80%
[14:41:47] [Server thread/INFO]: Preparing spawn area: 93%
[14:41:49] [Server thread/INFO]: Ptolemy2002[local:E:a8cf49a9] logged in with entity id 560 at (118.5, 63.0, -182.5)
[14:41:49] [Server thread/INFO]: Ptolemy2002 joined the game
[14:41:49] [Client thread/INFO]: [CHAT] A new §eOptiFine§f version is available: §eHD Ultra B9§f
[14:41:49] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_basic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:49] [Client thread/INFO]: [Shaders] composite format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gaux2 format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gaux3 format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gaux4 format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gcolor format: RGBA8
[14:41:49] [Client thread/INFO]: [Shaders] gdepth format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gnormal format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] composite format: R11F_G11F_B10F
[14:41:49] [Client thread/INFO]: [Shaders] gaux1 format: RGBA16
[14:41:49] [Client thread/INFO]: [Shaders] gaux2 format: R11F_G11F_B10F
[14:41:49] [Client thread/INFO]: [Shaders] gaux3 format: R11F_G11F_B10F
[14:41:49] [Client thread/INFO]: [Shaders] gaux4 format: R11F_G11F_B10F
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_basic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_basic.vsh, /shaders/gbuffers_basic.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_basic
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_textured.fsh
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] Error linking program: 11
[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_textured.vsh, /shaders/gbuffers_textured.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_textured»
[14:41:50] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_textured»
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured_lit.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_textured_lit.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_textured_lit.vsh, /shaders/gbuffers_textured_lit.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_textured_lit
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skybasic.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skybasic.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_skybasic.vsh, /shaders/gbuffers_skybasic.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_skybasic
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skytextured.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_skytextured.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_skytextured.vsh, /shaders/gbuffers_skytextured.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_skytextured
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_terrain.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/INFO]: [Shaders] composite format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gaux2 format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gaux3 format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gaux4 format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gcolor format: RGBA8
[14:41:50] [Client thread/INFO]: [Shaders] gdepth format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gnormal format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] composite format: R11F_G11F_B10F
[14:41:50] [Client thread/INFO]: [Shaders] gaux1 format: RGBA16
[14:41:50] [Client thread/INFO]: [Shaders] gaux2 format: R11F_G11F_B10F
[14:41:50] [Client thread/INFO]: [Shaders] gaux3 format: R11F_G11F_B10F
[14:41:50] [Client thread/INFO]: [Shaders] gaux4 format: R11F_G11F_B10F
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_terrain.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_terrain.vsh, /shaders/gbuffers_terrain.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_terrain
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_water.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_water.fsh
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_water.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(280) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] Error linking program: 15
[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_water.vsh, /shaders/gbuffers_water.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(41) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(280) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_water»
[14:41:50] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_water»
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_entities.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_entities.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_entities.vsh, /shaders/gbuffers_entities.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(16) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_entities
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_hand.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(39) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/gbuffers_hand.fsh
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_hand.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(232) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] Error linking program: 16
[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_hand.vsh, /shaders/gbuffers_hand.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(39) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(40) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(232) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:50] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «gbuffers_hand»
[14:41:50] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «gbuffers_hand»
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_weather.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/gbuffers_weather.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/gbuffers_weather.vsh, /shaders/gbuffers_weather.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(15) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: gbuffers_weather
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Noise texture enabled
[14:41:50] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[14:41:50] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite.fsh
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(160) : error C1059: non constant expression in initialization

[14:41:50] [Client thread/ERROR]: [Shaders] Error linking program: 17
[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/composite.vsh, /shaders/composite.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(160) : error C1059: non constant expression in initialization

[14:41:50] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite»
[14:41:50] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite»
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite1.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Noise texture enabled
[14:41:50] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite1.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Info log: /shaders/composite1.vsh, /shaders/composite1.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Program loaded: composite1
[14:41:50] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite2.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:50] [Client thread/INFO]: [Shaders] Shadow map resolution: 4096
[14:41:50] [Client thread/INFO]: [Shaders] Shadow map distance: 140.0
[14:41:50] [Client thread/INFO]: [Shaders] shadowHardwareFiltering0
[14:41:50] [Client thread/INFO]: [Shaders] Sun path rotation: -40.0f
[14:41:50] [Client thread/INFO]: [Shaders] Noise texture enabled
[14:41:50] [Client thread/INFO]: [Shaders] Noise texture resolution: 1024
[14:41:51] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite2.fsh
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite2.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(1887) : warning C7547: extension GL_ARB_gpu_shader5 not supported in profile gp4fp
0(2033) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2108) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2109) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2161) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2165) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2169) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2173) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2177) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2181) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2185) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2189) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2193) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2197) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2201) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2205) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2209) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2213) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2217) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2221) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2225) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2233) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2237) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2241) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2245) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2249) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2268) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»

[14:41:51] [Client thread/ERROR]: [Shaders] Error linking program: 18
[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/composite2.vsh, /shaders/composite2.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(1887) : warning C7547: extension GL_ARB_gpu_shader5 not supported in profile gp4fp
0(2033) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2108) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2109) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»
0(2161) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2165) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2169) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2173) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2177) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2181) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2185) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2189) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2193) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2197) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2201) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2205) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2209) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2213) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2217) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2221) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2225) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2229) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2233) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2237) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2241) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2245) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2249) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»
0(2268) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2)»

[14:41:51] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite2»
[14:41:51] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite2»
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite3.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] gaux1 mipmap enabled
[14:41:51] [Client thread/ERROR]: [Shaders] Error compiling fragment shader: /shaders/composite3.fsh
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite3.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(712) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:51] [Server thread/INFO]: Saving and pausing game.
[14:41:51] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:41:51] [Client thread/ERROR]: [Shaders] Error linking program: 18
[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/composite3.vsh, /shaders/composite3.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(92) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(712) : error C1115: unable to find compatible overloaded function «textureGather(sampler2D, vec2, int)»

[14:41:51] [Client thread/ERROR]: [Shaders] [Shaders] Error: Invalid program «composite3»
[14:41:51] [Client thread/INFO]: [CHAT] [Shaders] Error: Invalid program «composite3»
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite4.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] composite mipmap enabled
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite4.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/composite4.vsh, /shaders/composite4.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Program loaded: composite4
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite5.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/composite5.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/composite5.vsh, /shaders/composite5.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Program loaded: composite5
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/final.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/final.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/final.vsh, /shaders/final.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(96) : warning C7050: «nsunlight» might be used before being initialized

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Program loaded: final
[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/shadow.vsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

[14:41:51] [Client thread/INFO]: [Shaders] Shader info log: /shaders/shadow.fsh
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Info log: /shaders/shadow.vsh, /shaders/shadow.fsh
Vertex info
————
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile
0(34) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead
0(35) : warning C7555: ‘attribute’ is deprecated, use ‘in/out’ instead

Fragment info
————-
0(2) : warning C7568: #version 400 not fully supported on current GPU target profile

[14:41:51] [Client thread/INFO]: [Shaders] Program loaded: shadow
[14:41:51] [Client thread/INFO]: [Shaders] usedColorBuffers: 8
[14:41:51] [Client thread/INFO]: [Shaders] usedDepthBuffers: 2
[14:41:51] [Client thread/INFO]: [Shaders] usedShadowColorBuffers: 0
[14:41:51] [Client thread/INFO]: [Shaders] usedShadowDepthBuffers: 2
[14:41:51] [Client thread/INFO]: [Shaders] usedColorAttachs: 8
[14:41:51] [Client thread/INFO]: [Shaders] usedDrawBuffers: 2
[14:41:51] [Client thread/INFO]: [Shaders] Framebuffer created.
[14:41:52] [Client thread/INFO]: [Shaders] Shadow framebuffer created.
[14:41:52] [Client thread/INFO]: [Shaders] Reset world renderers
[14:41:52] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:41:52] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:41:52] [Server thread/WARN]: Can’t keep up! Did the system time change, or is the server overloaded? Running 3505ms behind, skipping 70 tick(s)
[14:41:57] [Client thread/INFO]: [Shaders] Reset model renderers
[14:42:01] [Server thread/INFO]: Saving and pausing game.
[14:42:01] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:42:02] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:42:02] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:42:15] [Client thread/INFO]: Stopping!
[14:42:15] [Client thread/INFO]: SoundSystem shutting down.
[14:42:15] [Server thread/INFO]: Stopping server
[14:42:15] [Server thread/INFO]: Saving players
[14:42:15] [Server thread/INFO]: Saving worlds
[14:42:15] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Overworld
[14:42:15] [Server thread/INFO]: Saving chunks for level ‘shader pack’/Nether
[14:42:15] [Server thread/INFO]: Saving chunks for level ‘shader pack’/The End
[14:42:15] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com

Both of these logs are from »latest.log» for the file directory I was playing with.

Remember those versions that minecraft pranked us with? Specifically:

  • Minecraft 2.0
  • Minecraft 1.VR-Pre1
  • Snapshot 15w14a
  • Minecraft 3D

Those are still downloadable! Watch this video for 2.0:

To download the other ones you need to make a folder in the versions folder for minecraft and put the client and JSON file for the versions in there. They all need to be named the same aside from file extensions. Once you do that, you will be able to choose that version when making a new profile with the minecraft launcher.

Источник

Hi,

I ran into this issue while trying to implement SMAA in GLSL. The Catalyst driver simply makes my app crash on glCompileShader(). I checked if I did anything wrong by trying to compile the same shader in the AMD GPU ShaderAnalyzer, and it gave «unexpected error» as the shader assembly output.

What is going on? Is this a compiler bug?

I used Win 7 64 bit, Catalyst 12.4 64 bit, latest ShaderAnalyzer. The same thing happened on Linux with 12.4 64 bit drivers.

here’s the shader:

#version 410

uniform mat4 proj, modelview;

uniform vec2 pixel_size;

#define SMAA_PIXEL_SIZE pixel_size

#define SMAA_PRESET_ULTRA 1

#define SMAA_GLSL_4 1

#define SMAA_ONLY_COMPILE_VS 1

/**

* Copyright (C) 2011 Jorge Jimenez (jorge@iryoku.com)

* Copyright (C) 2011 Belen Masia (bmasia@unizar.es)

* Copyright (C) 2011 Jose I. Echevarria (joseignacioechevarria@gmail.com)

* Copyright (C) 2011 Fernando Navarro (fernandn@microsoft.com)

* Copyright (C) 2011 Diego Gutierrez (diegog@unizar.es)

* All rights reserved.

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions are met:

*

*    1. Redistributions of source code must retain the above copyright notice,

*       this list of conditions and the following disclaimer.

*

*    2. Redistributions in binary form must reproduce the following disclaimer

*       in the documentation and/or other materials provided with the

*       distribution:

*

*      "Uses SMAA. Copyright (C) 2011 by Jorge Jimenez, Jose I. Echevarria,

*       Belen Masia, Fernando Navarro and Diego Gutierrez."

*

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS

* IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,

* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS

* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

* POSSIBILITY OF SUCH DAMAGE.

*

* The views and conclusions contained in the software and documentation are

* those of the authors and should not be interpreted as representing official

* policies, either expressed or implied, of the copyright holders.

*/

/**

*                  _______  ___  ___       ___           ___

*                 /       ||   /   |     /            /  

*                |   (---- |    /  |    /  ^         /  ^ 

*                        |  |/|  |   /  /_       /  /_ 

*              ----)   |   |  |  |  |  /  _____     /  _____ 

*             |_______/    |__|  |__| /__/     __ /__/     __

*

*                               E N H A N C E D

*       S U B P I X E L   M O R P H O L O G I C A L   A N T I A L I A S I N G

*

*                         http://www.iryoku.com/smaa/

*

* Hi, welcome aboard!

*

* Here you'll find instructions to get the shader up and running as fast as

* possible.

*

* IMPORTANTE NOTICE: when updating, remember to update both this file and the

* precomputed textures! They may change from version to version.

*

* The shader has three passes, chained together as follows:

*

*                           |input|------------------·

*                              v                     |

*                    [ SMAA*EdgeDetection ]          |

*                              v                     |

*                          |edgesTex|                |

*                              v                     |

*              [ SMAABlendingWeightCalculation ]     |

*                              v                     |

*                          |blendTex|                |

*                              v                     |

*                [ SMAANeighborhoodBlending ] <------·

*                              v

*                           |output|

*

* Note that each [pass] has its own vertex and pixel shader.

*

* You've three edge detection methods to choose from: luma, color or depth.

* They represent different quality/performance and anti-aliasing/sharpness

* tradeoffs, so our recommendation is for you to choose the one that best

* suits your particular scenario:

*

* - Depth edge detection is usually the fastest but it may miss some edges.

*

* - Luma edge detection is usually more expensive than depth edge detection,

*   but catches visible edges that depth edge detection can miss.

*

* - Color edge detection is usually the most expensive one but catches

*   chroma-only edges.

*

* For quickstarters: just use luma edge detection.

*

* The general advice is to not rush the integration process and ensure each

* step is done correctly (don't try to integrate SMAA T2x with predicated edge

* detection from the start!). Ok then, let's go!

*

*  1. The first step is to create two RGBA temporal framebuffers for holding

*     |edgesTex| and |blendTex|.

*

*     In DX10, you can use a RG framebuffer for the edges texture, but in our

*     experience it yields worse performance.

*

*     On the Xbox 360, you can use the same framebuffer for resolving both

*     |edgesTex| and |blendTex|, as they aren't needed simultaneously.

*

*  2. Both temporal framebuffers |edgesTex| and |blendTex| must be cleared

*     each frame. Do not forget to clear the alpha channel!

*

*  3. The next step is loading the two supporting precalculated textures,

*     'areaTex' and 'searchTex'. You'll find them in the 'Textures' folder as

*     C++ headers, and also as regular DDS files. They'll be needed for the

*     'SMAABlendingWeightCalculation' pass.

*

*     If you use the C++ headers, be sure to load them in the format specified

*     inside of them.

*

*  4. In DX9, all samplers must be set to linear filtering and clamp, with the

*     exception of 'searchTex', which must be set to point filtering.

*

*  5. All texture reads and buffer writes must be non-sRGB, with the exception

*     of the input read and the output write of input in

*     'SMAANeighborhoodBlending' (and only in this pass!). If sRGB reads in

*     this last pass are not possible, the technique will work anyway, but

*     will perform antialiasing in gamma space.

*

*     IMPORTANT: for best results the input read for the color/luma edge

*     detection should *NOT* be sRGB.

*

*  6. Before including SMAA.h you'll have to setup the framebuffer pixel size,

*     the target and any optional configuration defines. Optionally you can

*     use a preset.

*

*     You have three targets available:

*         SMAA_HLSL_3

*         SMAA_HLSL_4

*         SMAA_HLSL_4_1

*         SMAA_GLSL_3 *

*         SMAA_GLSL_4 *

*

*         * (See SMAA_ONLY_COMPILE_VS below).

*

*     And four presets:

*         SMAA_PRESET_LOW          (%60 of the quality)

*         SMAA_PRESET_MEDIUM       (%80 of the quality)

*         SMAA_PRESET_HIGH         (%95 of the quality)

*         SMAA_PRESET_ULTRA        (%99 of the quality)

*

*     For example:

*         #define SMAA_PIXEL_SIZE float2(1.0 / 1280.0, 1.0 / 720.0)

*         #define SMAA_HLSL_4 1

*         #define SMAA_PRESET_HIGH 1

*         #include "SMAA.h"

*

*  7. Then, you'll have to setup the passes as indicated in the scheme above.

*     You can take a look into SMAA.fx, to see how we did it for our demo.

*     Checkout the function wrappers, you may want to copy-paste them!

*

*  8. It's recommended to validate the produced |edgesTex| and |blendTex|.

*     It's advised to not continue with the implementation until both buffers

*     are verified to produce identical results to our reference demo.

*

*  9. After you get the last pass to work, it's time to optimize. You'll have

*     to initialize a stencil buffer in the first pass (discard is already in

*     the code), then mask execution by using it the second pass. The last

*     pass should be executed in all pixels.

*

*

* After this point you can choose to enable predicated thresholding,

* temporal supersampling and motion blur integration:

*

* a) If you want to use predicated thresholding, take a look into

*    SMAA_PREDICATION; you'll need to pass an extra texture in the edge

*    detection pass.

*

* b) If you want to enable temporal supersampling (SMAA T2x):

*

* 1. The first step is to render using subpixel jitters. I won't go into

*    detail, but it's as simple as moving each vertex position in the

*    vertex shader, you can check how we do it in our DX10 demo.

*

* 2. Then, you must setup the temporal resolve. You may want to take a look

*    into SMAAResolve for resolving 2x modes. After you get it working, you'll

*    probably see ghosting everywhere. But fear not, you can enable the

*    CryENGINE temporal reprojection by setting the SMAA_REPROJECTION macro.

*

* 3. The next step is to apply SMAA to each subpixel jittered frame, just as

*    done for 1x.

*

* 4. At this point you should already have something usable, but for best

*    results the proper area textures must be set depending on current jitter.

*    For this, the parameter 'subsampleIndices' of

*    'SMAABlendingWeightCalculationPS' must be set as follows, for our T2x

*    mode:

*

*    @SUBSAMPLE_INDICES

*

*    | S# |  Camera Jitter   |  subsampleIndices  |

*    +----+------------------+--------------------+

*    |  0 |  ( 0.25, -0.25)  |  int4(1, 1, 1, 0)  |

*    |  1 |  (-0.25,  0.25)  |  int4(2, 2, 2, 0)  |

*

*    These jitter positions assume a bottom-to-top y axis. S# stands for the

*    sample number.

*

* More information about temporal supersampling here:

*    http://iryoku.com/aacourse/downloads/13-Anti-Aliasing-Methods-in-CryENGINE-3.pdf

*

* c) If you want to enable spatial multisampling (SMAA S2x):

*

* 1. The scene must be rendered using MSAA 2x. The MSAA 2x buffer must be

*    created with:

*      - DX10:     see below (*)

*      - DX10.1:   D3D10_STANDARD_MULTISAMPLE_PATTERN or

*      - DX11:     D3D11_STANDARD_MULTISAMPLE_PATTERN

*

*    This allows to ensure that the subsample order matches the table in

*    @SUBSAMPLE_INDICES.

*

*    (*) In the case of DX10, we refer the reader to:

*      - SMAA::detectMSAAOrder and

*      - SMAA::msaaReorder

*

*    These functions allow to match the standard multisample patterns by

*    detecting the subsample order for a specific GPU, and reordering

*    them appropriately.

*

* 2. A shader must be run to output each subsample into a separate buffer

*    (DX10 is required). You can use SMAASeparate for this purpose, or just do

*    it in an existing pass (for example, in the tone mapping pass).

*

* 3. The full SMAA 1x pipeline must be run for each separated buffer, storing

*    the results in the final buffer. The second run should alpha blend with

*    the existing final buffer using a blending factor of 0.5.

*    'subsampleIndices' must be adjusted as in the SMAA T2x case (see point

*    b).

*

* d) If you want to enable temporal supersampling on top of SMAA S2x

*    (which actually is SMAA 4x):

*

* 1. SMAA 4x consists on temporally jittering SMAA S2x, so the first step is

*    to calculate SMAA S2x for current frame. In this case, 'subsampleIndices'

*    must be set as follows:

*

*    | F# | S# |   Camera Jitter    |    Net Jitter     |  subsampleIndices  |

*    +----+----+--------------------+-------------------+--------------------+

*    |  0 |  0 |  ( 0.125,  0.125)  |  ( 0.375, -0.125) |  int4(5, 3, 1, 3)  |

*    |  0 |  1 |  ( 0.125,  0.125)  |  (-0.125,  0.375) |  int4(4, 6, 2, 3)  |

*    +----+----+--------------------+-------------------+--------------------+

*    |  1 |  2 |  (-0.125, -0.125)  |  ( 0.125, -0.375) |  int4(3, 5, 1, 4)  |

*    |  1 |  3 |  (-0.125, -0.125)  |  (-0.375,  0.125) |  int4(6, 4, 2, 4)  |

*

*    These jitter positions assume a bottom-to-top y axis. F# stands for the

*    frame number. S# stands for the sample number.

*

* 2. After calculating SMAA S2x for current frame (with the new subsample

*    indices), previous frame must be reprojected as in SMAA T2x mode (see

*    point b).

*

* e) If motion blur is used, you may want to do the edge detection pass

*    together with motion blur. This has two advantages:

*

* 1. Pixels under heavy motion can be omitted from the edge detection process.

*    For these pixels we can just store "no edge", as motion blur will take

*    care of them.

* 2. The center pixel tap is reused.

*

* Note that in this case depth testing should be used instead of stenciling,

* as we have to write all the pixels in the motion blur pass.

*

* That's it!

*/

//-----------------------------------------------------------------------------

// SMAA Presets

/**

* Note that if you use one of these presets, the corresponding macros below

* won't be used.

*/

#if SMAA_PRESET_LOW == 1

#define SMAA_THRESHOLD 0.15

#define SMAA_MAX_SEARCH_STEPS 4

#define SMAA_MAX_SEARCH_STEPS_DIAG 0

#define SMAA_CORNER_ROUNDING 100

#elif SMAA_PRESET_MEDIUM == 1

#define SMAA_THRESHOLD 0.1

#define SMAA_MAX_SEARCH_STEPS 8

#define SMAA_MAX_SEARCH_STEPS_DIAG 0

#define SMAA_CORNER_ROUNDING 100

#elif SMAA_PRESET_HIGH == 1

#define SMAA_THRESHOLD 0.1

#define SMAA_MAX_SEARCH_STEPS 16

#define SMAA_MAX_SEARCH_STEPS_DIAG 8

#define SMAA_CORNER_ROUNDING 25

#elif SMAA_PRESET_ULTRA == 1

#define SMAA_THRESHOLD 0.05

#define SMAA_MAX_SEARCH_STEPS 32

#define SMAA_MAX_SEARCH_STEPS_DIAG 16

#define SMAA_CORNER_ROUNDING 25

#endif

//-----------------------------------------------------------------------------

// Configurable Defines

/**

* SMAA_THRESHOLD specifies the threshold or sensitivity to edges.

* Lowering this value you will be able to detect more edges at the expense of

* performance.

*

* Range: [0, 0.5]

*   0.1 is a reasonable value, and allows to catch most visible edges.

*   0.05 is a rather overkill value, that allows to catch 'em all.

*

*   If temporal supersampling is used, 0.2 could be a reasonable value, as low

*   contrast edges are properly filtered by just 2x.

*/

#ifndef SMAA_THRESHOLD

#define SMAA_THRESHOLD 0.1

#endif

/**

* SMAA_DEPTH_THRESHOLD specifies the threshold for depth edge detection.

*

* Range: depends on the depth range of the scene.

*/

#ifndef SMAA_DEPTH_THRESHOLD

#define SMAA_DEPTH_THRESHOLD (0.1 * SMAA_THRESHOLD)

#endif

/**

* SMAA_MAX_SEARCH_STEPS specifies the maximum steps performed in the

* horizontal/vertical pattern searches, at each side of the pixel.

*

* In number of pixels, it's actually the double. So the maximum line length

* perfectly handled by, for example 16, is 64 (by perfectly, we meant that

* longer lines won't look as good, but still antialiased).

*

* Range: [0, 98]

*/

#ifndef SMAA_MAX_SEARCH_STEPS

#define SMAA_MAX_SEARCH_STEPS 16

#endif

/**

* SMAA_MAX_SEARCH_STEPS_DIAG specifies the maximum steps performed in the

* diagonal pattern searches, at each side of the pixel. In this case we jump

* one pixel at time, instead of two.

*

* Range: [0, 20]; set it to 0 to disable diagonal processing.

*

* On high-end machines it is cheap (between a 0.8x and 0.9x slower for 16

* steps), but it can have a significant impact on older machines.

*/

#ifndef SMAA_MAX_SEARCH_STEPS_DIAG

#define SMAA_MAX_SEARCH_STEPS_DIAG 8

#endif

/**

* SMAA_CORNER_ROUNDING specifies how much sharp corners will be rounded.

*

* Range: [0, 100]; set it to 100 to disable corner detection.

*/

#ifndef SMAA_CORNER_ROUNDING

#define SMAA_CORNER_ROUNDING 25

#endif

/**

* Predicated thresholding allows to better preserve texture details and to

* improve performance, by decreasing the number of detected edges using an

* additional buffer like the light accumulation buffer, object ids or even the

* depth buffer (the depth buffer usage may be limited to indoor or short range

* scenes).

*

* It locally decreases the luma or color threshold if an edge is found in an

* additional buffer (so the global threshold can be higher).

*

* This method was developed by Playstation EDGE MLAA team, and used in

* Killzone 3, by using the light accumulation buffer. More information here:

*     http://iryoku.com/aacourse/downloads/06-MLAA-on-PS3.pptx

*/

#ifndef SMAA_PREDICATION

#define SMAA_PREDICATION 0

#endif

/**

* Threshold to be used in the additional predication buffer.

*

* Range: depends on the input, so you'll have to find the magic number that

* works for you.

*/

#ifndef SMAA_PREDICATION_THRESHOLD

#define SMAA_PREDICATION_THRESHOLD 0.01

#endif

/**

* How much to scale the global threshold used for luma or color edge

* detection when using predication.

*

* Range: [1, 5]

*/

#ifndef SMAA_PREDICATION_SCALE

#define SMAA_PREDICATION_SCALE 2.0

#endif

/**

* How much to locally decrease the threshold.

*

* Range: [0, 1]

*/

#ifndef SMAA_PREDICATION_STRENGTH

#define SMAA_PREDICATION_STRENGTH 0.4

#endif

/**

* Temporal reprojection allows to remove ghosting artifacts when using

* temporal supersampling. We use the CryEngine 3 method which also introduces

* velocity weighting. This feature is of extreme importance for totally

* removing ghosting. More information here:

*    http://iryoku.com/aacourse/downloads/13-Anti-Aliasing-Methods-in-CryENGINE-3.pdf

*

* Note that you'll need to setup a velocity buffer for enabling reprojection.

* For static geometry, saving the previous depth buffer is a viable

* alternative.

*/

#ifndef SMAA_REPROJECTION

#define SMAA_REPROJECTION 0

#endif

/**

* SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows to

* remove ghosting trails behind the moving object, which are not removed by

* just using reprojection. Using low values will exhibit ghosting, while using

* high values will disable temporal supersampling under motion.

*

* Behind the scenes, velocity weighting removes temporal supersampling when

* the velocity of the subsamples differs (meaning they are different objects).

*

* Range: [0, 80]

*/

#define SMAA_REPROJECTION_WEIGHT_SCALE 30.0

/**

* In the last pass we leverage bilinear filtering to avoid some lerps.

* However, bilinear filtering is done in gamma space in DX9, under DX9

* hardware (but not in DX9 code running on DX10 hardware), which gives

* inaccurate results.

*

* So, if you are in DX9, under DX9 hardware, and do you want accurate linear

* blending, you must set this flag to 1.

*

* It's ignored when using SMAA_HLSL_4, and of course, only has sense when

* using sRGB read and writes on the last pass.

*/

#ifndef SMAA_DIRECTX9_LINEAR_BLEND

#define SMAA_DIRECTX9_LINEAR_BLEND 0

#endif

/**

* On ATI compilers, discard cannot be used in vertex shaders. Thus, they need

* to be compiled separately. These macros allow to easily accomplish it.

*/

#ifndef SMAA_ONLY_COMPILE_VS

#define SMAA_ONLY_COMPILE_VS 0

#endif

#ifndef SMAA_ONLY_COMPILE_PS

#define SMAA_ONLY_COMPILE_PS 0

#endif

//-----------------------------------------------------------------------------

// Non-Configurable Defines

#ifndef SMAA_AREATEX_MAX_DISTANCE

#define SMAA_AREATEX_MAX_DISTANCE 16

#endif

#ifndef SMAA_AREATEX_MAX_DISTANCE_DIAG

#define SMAA_AREATEX_MAX_DISTANCE_DIAG 20

#endif

#define SMAA_AREATEX_PIXEL_SIZE (1.0 / float2(160.0, 560.0))

#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0)

//-----------------------------------------------------------------------------

// Porting Functions

#if SMAA_HLSL_3 == 1

#define SMAATexture2D sampler2D

#define SMAASampleLevelZero(tex, coord) tex2Dlod(tex, float4(coord, 0.0, 0.0))

#define SMAASampleLevelZeroPoint(tex, coord) tex2Dlod(tex, float4(coord, 0.0, 0.0))

#define SMAASample(tex, coord) tex2D(tex, coord)

#define SMAASamplePoint(tex, coord) tex2D(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) tex2Dlod(tex, float4(coord + offset * SMAA_PIXEL_SIZE, 0.0, 0.0))

#define SMAASampleOffset(tex, coord, offset) tex2D(tex, coord + offset * SMAA_PIXEL_SIZE)

#define SMAALerp(a, b, t) lerp(a, b, t)

#define SMAASaturate(a) saturate(a)

#define SMAAMad(a, b, c) mad(a, b, c)

#define SMAA_FLATTEN [flatten]

#define SMAA_BRANCH [branch]

#endif

#if SMAA_HLSL_4 == 1 || SMAA_HLSL_4_1 == 1

SamplerState LinearSampler { Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = Clamp; AddressV = Clamp; };

SamplerState PointSampler { Filter = MIN_MAG_MIP_POINT; AddressU = Clamp; AddressV = Clamp; };

#define SMAATexture2D Texture2D

#define SMAASampleLevelZero(tex, coord) tex.SampleLevel(LinearSampler, coord, 0)

#define SMAASampleLevelZeroPoint(tex, coord) tex.SampleLevel(PointSampler, coord, 0)

#define SMAASample(tex, coord) SMAASampleLevelZero(tex, coord)

#define SMAASamplePoint(tex, coord) SMAASampleLevelZeroPoint(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) tex.SampleLevel(LinearSampler, coord, 0, offset)

#define SMAASampleOffset(tex, coord, offset) SMAASampleLevelZeroOffset(tex, coord, offset)

#define SMAALerp(a, b, t) lerp(a, b, t)

#define SMAASaturate(a) saturate(a)

#define SMAAMad(a, b, c) mad(a, b, c)

#define SMAA_FLATTEN [flatten]

#define SMAA_BRANCH [branch]

#define SMAATexture2DMS2 Texture2DMS<float4, 2>

#define SMAALoad(tex, pos, sample) tex.Load(pos, sample)

#endif

#if SMAA_HLSL_4_1 == 1

#define SMAAGather(tex, coord) tex.Gather(LinearSampler, coord, 0)

#endif

#if SMAA_GLSL_3 == 1 || SMAA_GLSL_4 == 1

#define SMAATexture2D sampler2D

#define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0)

#define SMAASampleLevelZeroPoint(tex, coord) textureLod(tex, coord, 0.0)

#define SMAASample(tex, coord) texture(tex, coord)

#define SMAASamplePoint(tex, coord) texture(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) textureLodOffset(tex, coord, 0.0, offset)

#define SMAASampleOffset(tex, coord, offset) texture(tex, coord, offset)

#define SMAALerp(a, b, t) mix(a, b, t)

#define SMAASaturate(a) clamp(a, 0.0, 1.0)

#define SMAA_FLATTEN

#define SMAA_BRANCH

#define float2 vec2

#define float3 vec3

#define float4 vec4

#define int2 ivec2

#define int3 ivec3

#define int4 ivec4

#endif

#if SMAA_GLSL_3 == 1

#define SMAAMad(a, b, c) (a * b + c)

#endif

#if SMAA_GLSL_4 == 1

#define SMAAMad(a, b, c) fma(a, b, c)

#define SMAAGather(tex, coord) textureGather(tex, coord)

#endif

//-----------------------------------------------------------------------------

// Misc functions

/**

* Gathers current pixel, and the top-left neighbors.

*/

float3 SMAAGatherNeighbours(float2 texcoord,

                            float4 offset[3],

                            SMAATexture2D tex) {

    #if SMAA_HLSL_4_1 == 1 || SMAA_GLSL_4 == 1

    return SMAAGather(tex, texcoord + SMAA_PIXEL_SIZE * float2(-0.5, -0.5)).grb;

    #else

    float P = SMAASample(tex, texcoord).r;

    float Pleft = SMAASample(tex, offset[0].xy).r;

    float Ptop  = SMAASample(tex, offset[0].zw).r;

    return float3(P, Pleft, Ptop);

    #endif

}

/**

* Adjusts the threshold by means of predication.

*/

float2 SMAACalculatePredicatedThreshold(float2 texcoord,

                                        float4 offset[3],

                                        SMAATexture2D colorTex,

                                        SMAATexture2D predicationTex) {

    float3 neighbours = SMAAGatherNeighbours(texcoord, offset, predicationTex);

    float2 delta = abs(neighbours.xx - neighbours.yz);

    float2 edges = step(SMAA_PREDICATION_THRESHOLD, delta);

    return SMAA_PREDICATION_SCALE * SMAA_THRESHOLD * (1.0 - SMAA_PREDICATION_STRENGTH * edges);

}

#if SMAA_ONLY_COMPILE_PS == 0

//-----------------------------------------------------------------------------

// Vertex Shaders

/**

* Edge Detection Vertex Shader

*/

void SMAAEdgeDetectionVS(float4 position,

                         out float4 svPosition,

                         inout float2 texcoord,

                         out float4 offset[3]) {

    svPosition = position;

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-1.0, 0.0, 0.0, -1.0);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4( 1.0, 0.0, 0.0,  1.0);

    offset[2] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-2.0, 0.0, 0.0, -2.0);

}

/**

* Blend Weight Calculation Vertex Shader

*/

void SMAABlendingWeightCalculationVS(float4 position,

                                     out float4 svPosition,

                                     inout float2 texcoord,

                                     out float2 pixcoord,

                                     out float4 offset[3]) {

    svPosition = position;

    pixcoord = texcoord / SMAA_PIXEL_SIZE;

    // We will use these offsets for the searches later on (see @PSEUDO_GATHER4):

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-0.25, -0.125,  1.25, -0.125);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-0.125, -0.25, -0.125,  1.25);

    // And these for the searches, they indicate the ends of the loops:

    offset[2] = float4(offset[0].xz, offset[1].yw) +

                float4(-2.0, 2.0, -2.0, 2.0) *

                SMAA_PIXEL_SIZE.xxyy * float(SMAA_MAX_SEARCH_STEPS);

}

/**

* Neighborhood Blending Vertex Shader

*/

void SMAANeighborhoodBlendingVS(float4 position,

                                out float4 svPosition,

                                inout float2 texcoord,

                                out float4 offset[2]) {

    svPosition = position;

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-1.0, 0.0, 0.0, -1.0);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4( 1.0, 0.0, 0.0,  1.0);

}

/**

* Resolve Vertex Shader

*/

void SMAAResolveVS(float4 position,

                   out float4 svPosition,

                   inout float2 texcoord) {

    svPosition = position;

}

/**

* Separate Vertex Shader

*/

void SMAASeparateVS(float4 position,

                    out float4 svPosition,

                    inout float2 texcoord) {

    svPosition = position;

}

#endif // SMAA_ONLY_COMPILE_PS == 0

#if SMAA_ONLY_COMPILE_VS == 0

//-----------------------------------------------------------------------------

// Edge Detection Pixel Shaders (First Pass)

/**

* Luma Edge Detection

*

* IMPORTANT NOTICE: luma edge detection requires gamma-corrected colors, and

* thus 'colorTex' should be a non-sRGB texture.

*/

float4 SMAALumaEdgeDetectionPS(float2 texcoord,

                               float4 offset[3],

                               SMAATexture2D colorTex

                               #if SMAA_PREDICATION == 1

                               , SMAATexture2D predicationTex

                               #endif

                               ) {

    // Calculate the threshold:

    #if SMAA_PREDICATION == 1

    float2 threshold = SMAACalculatePredicatedThreshold(texcoord, offset, colorTex, predicationTex);

    #else

    float2 threshold = float2(SMAA_THRESHOLD, SMAA_THRESHOLD);

    #endif

    // Calculate lumas:

    float3 weights = float3(0.2126, 0.7152, 0.0722);

    float L = dot(SMAASample(colorTex, texcoord).rgb, weights);

    float Lleft = dot(SMAASample(colorTex, offset[0].xy).rgb, weights);

    float Ltop  = dot(SMAASample(colorTex, offset[0].zw).rgb, weights);

    // We do the usual threshold:

    float4 delta;

    delta.xy = abs(L - float2(Lleft, Ltop));

    float2 edges = step(threshold, delta.xy);

    // Then discard if there is no edge:

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    // Calculate right and bottom deltas:

    float Lright = dot(SMAASample(colorTex, offset[1].xy).rgb, weights);

    float Lbottom  = dot(SMAASample(colorTex, offset[1].zw).rgb, weights);

    delta.zw = abs(L - float2(Lright, Lbottom));

    // Calculate the maximum delta in the direct neighborhood:

    float2 maxDelta = max(delta.xy, delta.zw);

    maxDelta = max(maxDelta.xx, maxDelta.yy);

    // Calculate left-left and top-top deltas:

    float Lleftleft = dot(SMAASample(colorTex, offset[2].xy).rgb, weights);

    float Ltoptop = dot(SMAASample(colorTex, offset[2].zw).rgb, weights);

    delta.zw = abs(float2(Lleft, Ltop) - float2(Lleftleft, Ltoptop));

    // Calculate the final maximum delta:

    maxDelta = max(maxDelta.xy, delta.zw);

    /**

     * Each edge with a delta in luma of less than 50% of the maximum luma

     * surrounding this pixel is discarded. This allows to eliminate spurious

     * crossing edges, and is based on the fact that, if there is too much

     * contrast in a direction, that will hide contrast in the other

     * neighbors.

     * This is done after the discard intentionally as this situation doesn't

     * happen too frequently (but it's important to do as it prevents some

     * edges from going undetected).

     */

    edges.xy *= step(0.5 * maxDelta, delta.xy);

    return float4(edges, 0.0, 0.0);

}

/**

* Color Edge Detection

*

* IMPORTANT NOTICE: color edge detection requires gamma-corrected colors, and

* thus 'colorTex' should be a non-sRGB texture.

*/

float4 SMAAColorEdgeDetectionPS(float2 texcoord,

                                float4 offset[3],

                                SMAATexture2D colorTex

                                #if SMAA_PREDICATION == 1

                                , SMAATexture2D predicationTex

                                #endif

                                ) {

    // Calculate the threshold:

    #if SMAA_PREDICATION == 1

    float2 threshold = SMAACalculatePredicatedThreshold(texcoord, offset, colorTex, predicationTex);

    #else

    float2 threshold = float2(SMAA_THRESHOLD, SMAA_THRESHOLD);

    #endif

    // Calculate color deltas:

    float4 delta;

    float3 C = SMAASample(colorTex, texcoord).rgb;

    float3 Cleft = SMAASample(colorTex, offset[0].xy).rgb;

    float3 t = abs(C - Cleft);

    delta.x = max(max(t.r, t.g), t.b);

    float3 Ctop  = SMAASample(colorTex, offset[0].zw).rgb;

    t = abs(C - Ctop);

    delta.y = max(max(t.r, t.g), t.b);

    // We do the usual threshold:

    float2 edges = step(threshold, delta.xy);

    // Then discard if there is no edge:

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    // Calculate right and bottom deltas:

    float3 Cright = SMAASample(colorTex, offset[1].xy).rgb;

    t = abs(C - Cright);

    delta.z = max(max(t.r, t.g), t.b);

    float3 Cbottom  = SMAASample(colorTex, offset[1].zw).rgb;

    t = abs(C - Cbottom);

    delta.w = max(max(t.r, t.g), t.b);

    // Calculate the maximum delta in the direct neighborhood:

    float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w);

    // Calculate left-left and top-top deltas:

    float3 Cleftleft  = SMAASample(colorTex, offset[2].xy).rgb;

    t = abs(C - Cleftleft);

    delta.z = max(max(t.r, t.g), t.b);

    float3 Ctoptop = SMAASample(colorTex, offset[2].zw).rgb;

    t = abs(C - Ctoptop);

    delta.w = max(max(t.r, t.g), t.b);

    // Calculate the final maximum delta:

    maxDelta = max(max(maxDelta, delta.z), delta.w);

    // Local contrast adaptation in action:

    edges.xy *= step(0.5 * maxDelta, delta.xy);

    return float4(edges, 0.0, 0.0);

}

/**

* Depth Edge Detection

*/

float4 SMAADepthEdgeDetectionPS(float2 texcoord,

                                float4 offset[3],

                                SMAATexture2D depthTex) {

    float3 neighbours = SMAAGatherNeighbours(texcoord, offset, depthTex);

    float2 delta = abs(neighbours.xx - float2(neighbours.y, neighbours.z));

    float2 edges = step(SMAA_DEPTH_THRESHOLD, delta);

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    return float4(edges, 0.0, 0.0);

}

//-----------------------------------------------------------------------------

// Diagonal Search Functions

#if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

/**

* These functions allows to perform diagonal pattern searches.

*/

float SMAASearchDiag1(SMAATexture2D edgesTex, float2 texcoord, float2 dir, float c) {

    texcoord += dir * SMAA_PIXEL_SIZE;

    float2 e = float2(0.0, 0.0);

    float i;

    for (i = 0.0; i < float(SMAA_MAX_SEARCH_STEPS_DIAG); i++) {

        e.rg = SMAASampleLevelZero(edgesTex, texcoord).rg;

        SMAA_FLATTEN if (dot(e, float2(1.0, 1.0)) < 1.9) break;

        texcoord += dir * SMAA_PIXEL_SIZE;

    }

    return i + float(e.g > 0.9) * c;

}

float SMAASearchDiag2(SMAATexture2D edgesTex, float2 texcoord, float2 dir, float c) {

    texcoord += dir * SMAA_PIXEL_SIZE;

    float2 e = float2(0.0, 0.0);

    float i;

    for (i = 0.0; i < float(SMAA_MAX_SEARCH_STEPS_DIAG); i++) {

        e.g = SMAASampleLevelZero(edgesTex, texcoord).g;

        e.r = SMAASampleLevelZeroOffset(edgesTex, texcoord, int2(1, 0)).r;

        SMAA_FLATTEN if (dot(e, float2(1.0, 1.0)) < 1.9) break;

        texcoord += dir * SMAA_PIXEL_SIZE;

    }

    return i + float(e.g > 0.9) * c;

}

/**

* Similar to SMAAArea, this calculates the area corresponding to a certain

* diagonal distance and crossing edges 'e'.

*/

float2 SMAAAreaDiag(SMAATexture2D areaTex, float2 dist, float2 e, float offset) {

    float2 texcoord = float(SMAA_AREATEX_MAX_DISTANCE_DIAG) * e + dist;

    // We do a scale and bias for mapping to texel space:

    texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);

    // Diagonal areas are on the second half of the texture:

    texcoord.x += 0.5;

    // Move to proper place, according to the subpixel offset:

    texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;

    // Do it!

    #if SMAA_HLSL_3 == 1

    return SMAASampleLevelZero(areaTex, texcoord).ra;

    #else

    return SMAASampleLevelZero(areaTex, texcoord).rg;

    #endif

}

/**

* This searches for diagonal patterns and returns the corresponding weights.

*/

float2 SMAACalculateDiagWeights(SMAATexture2D edgesTex, SMAATexture2D areaTex, float2 texcoord, float2 e, int4 subsampleIndices) {

    float2 weights = float2(0.0, 0.0);

    float2 d;

    d.x = e.r > 0.0? SMAASearchDiag1(edgesTex, texcoord, float2(-1.0,  1.0), 1.0) : 0.0;

    d.y = SMAASearchDiag1(edgesTex, texcoord, float2(1.0, -1.0), 0.0);

    SMAA_BRANCH

    if (d.r + d.g > 2.0) { // d.r + d.g + 1 > 3

        float4 coords = SMAAMad(float4(-d.r, d.r, d.g, -d.g), SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

        float4 c;

        c.x = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1,  0)).g;

        c.y = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 0,  0)).r;

        c.z = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1,  0)).g;

        c.w = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1, -1)).r;

        float2 e = 2.0 * c.xz + c.yw;

        float t = float(SMAA_MAX_SEARCH_STEPS_DIAG) - 1.0;

        e *= step(d.rg, float2(t, t));

        weights += SMAAAreaDiag(areaTex, d, e, float(subsampleIndices.z));

    }

    d.x = SMAASearchDiag2(edgesTex, texcoord, float2(-1.0, -1.0), 0.0);

    float right = SMAASampleLevelZeroOffset(edgesTex, texcoord, int2(1, 0)).r;

    d.y = right > 0.0? SMAASearchDiag2(edgesTex, texcoord, float2(1.0, 1.0), 1.0) : 0.0;

    SMAA_BRANCH

    if (d.r + d.g > 2.0) { // d.r + d.g + 1 > 3

        float4 coords = SMAAMad(float4(-d.r, -d.r, d.g, d.g), SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

        float4 c;

        c.x  = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1,  0)).g;

        c.y  = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 0, -1)).r;

        c.zw = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1,  0)).gr;

        float2 e = 2.0 * c.xz + c.yw;

        float t = float(SMAA_MAX_SEARCH_STEPS_DIAG) - 1.0;

        e *= step(d.rg, float2(t, t));

        weights += SMAAAreaDiag(areaTex, d, e, float(subsampleIndices.w)).gr;

    }

    return weights;

}

#endif

//-----------------------------------------------------------------------------

// Horizontal/Vertical Search Functions

/**

* This allows to determine how much length should we add in the last step

* of the searches. It takes the bilinearly interpolated edge (see

* @PSEUDO_GATHER4), and adds 0, 1 or 2, depending on which edges and

* crossing edges are active.

*/

float SMAASearchLength(SMAATexture2D searchTex, float2 e, float bias, float scale) {

    // Not required if searchTex accesses are set to point:

    // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);

    // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE +

    //     e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;

    e.r = bias + e.r * scale;

    return 255.0 * SMAASampleLevelZeroPoint(searchTex, e).r;

}

/**

* Horizontal/vertical search functions for the 2nd pass.

*/

float SMAASearchXLeft(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    /**

     * @PSEUDO_GATHER4

     * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to

     * sample between edge, thus fetching four edges in a row.

     * Sampling with different offsets in each direction allows to disambiguate

     * which edges are active from the four fetched ones.

     */

    float2 e = float2(0.0, 1.0);

    while (texcoord.x > end &&

           e.g > 0.8281 && // Is there some edge not activated?

           e.r == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord -= float2(2.0, 0.0) * SMAA_PIXEL_SIZE;

    }

    // We correct the previous (-0.25, -0.125) offset we applied:

    texcoord.x += 0.25 * SMAA_PIXEL_SIZE.x;

    // The searches are bias by 1, so adjust the coords accordingly:

    texcoord.x += SMAA_PIXEL_SIZE.x;

    // Disambiguate the length added by the last step:

    texcoord.x += 2.0 * SMAA_PIXEL_SIZE.x; // Undo last step

    texcoord.x -= SMAA_PIXEL_SIZE.x * SMAASearchLength(searchTex, e, 0.0, 0.5);

    return texcoord.x;

}

float SMAASearchXRight(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(0.0, 1.0);

    while (texcoord.x < end &&

           e.g > 0.8281 && // Is there some edge not activated?

           e.r == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord += float2(2.0, 0.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.x -= 0.25 * SMAA_PIXEL_SIZE.x;

    texcoord.x -= SMAA_PIXEL_SIZE.x;

    texcoord.x -= 2.0 * SMAA_PIXEL_SIZE.x;

    texcoord.x += SMAA_PIXEL_SIZE.x * SMAASearchLength(searchTex, e, 0.5, 0.5);

    return texcoord.x;

}

float SMAASearchYUp(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(1.0, 0.0);

    while (texcoord.y > end &&

           e.r > 0.8281 && // Is there some edge not activated?

           e.g == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord -= float2(0.0, 2.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.y += 0.25 * SMAA_PIXEL_SIZE.y;

    texcoord.y += SMAA_PIXEL_SIZE.y;

    texcoord.y += 2.0 * SMAA_PIXEL_SIZE.y;

    texcoord.y -= SMAA_PIXEL_SIZE.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5);

    return texcoord.y;

}

float SMAASearchYDown(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(1.0, 0.0);

    while (texcoord.y < end &&

           e.r > 0.8281 && // Is there some edge not activated?

           e.g == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord += float2(0.0, 2.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.y -= 0.25 * SMAA_PIXEL_SIZE.y;

    texcoord.y -= SMAA_PIXEL_SIZE.y;

    texcoord.y -= 2.0 * SMAA_PIXEL_SIZE.y;

    texcoord.y += SMAA_PIXEL_SIZE.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5);

    return texcoord.y;

}

/**

* Ok, we have the distance and both crossing edges. So, what are the areas

* at each side of current edge?

*/

float2 SMAAArea(SMAATexture2D areaTex, float2 dist, float e1, float e2, float offset) {

    // Rounding prevents precision errors of bilinear filtering:

    float2 texcoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * float2(e1, e2)) + dist;

    // We do a scale and bias for mapping to texel space:

    texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);

    // Move to proper place, according to the subpixel offset:

    texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;

    // Do it!

    #if SMAA_HLSL_3 == 1

    return SMAASampleLevelZero(areaTex, texcoord).ra;

    #else

    return SMAASampleLevelZero(areaTex, texcoord).rg;

    #endif

}

//-----------------------------------------------------------------------------

// Corner Detection Functions

void SMAADetectHorizontalCornerPattern(SMAATexture2D edgesTex, inout float2 weights, float2 texcoord, float2 d) {

    #if SMAA_CORNER_ROUNDING < 100 || SMAA_FORCE_CORNER_DETECTION == 1

    float4 coords = SMAAMad(float4(d.x, 0.0, d.y, 0.0),

                            SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

    float2 e;

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(0.0,  1.0)).r;

    bool left = abs(d.x) < abs(d.y);

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(0.0, -2.0)).r;

    if (left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1.0,  1.0)).r;

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1.0, -2.0)).r;

    if (!left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    #endif

}

void SMAADetectVerticalCornerPattern(SMAATexture2D edgesTex, inout float2 weights, float2 texcoord, float2 d) {

    #if SMAA_CORNER_ROUNDING < 100 || SMAA_FORCE_CORNER_DETECTION == 1

    float4 coords = SMAAMad(float4(0.0, d.x, 0.0, d.y),

                            SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

    float2 e;

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 1.0, 0.0)).g;

    bool left = abs(d.x) < abs(d.y);

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-2.0, 0.0)).g;

    if (left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1.0, 1.0)).g;

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(-2.0, 1.0)).g;

    if (!left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    #endif

}

//-----------------------------------------------------------------------------

// Blending Weight Calculation Pixel Shader (Second Pass)

float4 SMAABlendingWeightCalculationPS(float2 texcoord,

                                       float2 pixcoord,

                                       float4 offset[3],

                                       SMAATexture2D edgesTex,

                                       SMAATexture2D areaTex,

                                       SMAATexture2D searchTex,

                                       int4 subsampleIndices) { // Just pass zero for SMAA 1x, see @SUBSAMPLE_INDICES.

    float4 weights = float4(0.0, 0.0, 0.0, 0.0);

    float2 e = SMAASample(edgesTex, texcoord).rg;

    SMAA_BRANCH

    if (e.g > 0.0) { // Edge at north

        #if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

        // Diagonals have both north and west edges, so searching for them in

        // one of the boundaries is enough.

        weights.rg = SMAACalculateDiagWeights(edgesTex, areaTex, texcoord, e, subsampleIndices);

        // We give priority to diagonals, so if we find a diagonal we skip

        // horizontal/vertical processing.

        SMAA_BRANCH

        if (dot(weights.rg, float2(1.0, 1.0)) == 0.0) {

        #endif

        float2 d;

        // Find the distance to the left:

        float2 coords;

        coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x);

        coords.y = offset[1].y; // offset[1].y = texcoord.y - 0.25 * SMAA_PIXEL_SIZE.y (@CROSSING_OFFSET)

        d.x = coords.x;

        // Now fetch the left crossing edges, two at a time using bilinear

        // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to

        // discern what value each edge has:

        float e1 = SMAASampleLevelZero(edgesTex, coords).r;

        // Find the distance to the right:

        coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y);

        d.y = coords.x;

        // We want the distances to be in pixel units (doing this here allow to

        // better interleave arithmetic and memory accesses):

        d = d / SMAA_PIXEL_SIZE.x - pixcoord.x;

        // SMAAArea below needs a sqrt, as the areas texture is compressed

        // quadratically:

        float2 sqrt_d = sqrt(abs(d));

        // Fetch the right crossing edges:

        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, int2(1, 0)).r;

        // Ok, we know how this pattern looks like, now it is time for getting

        // the actual area:

        weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y));

        // Fix corners:

        SMAADetectHorizontalCornerPattern(edgesTex, weights.rg, texcoord, d);

        #if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

        } else

            e.r = 0.0; // Skip vertical processing.

        #endif

    }

    SMAA_BRANCH

    if (e.r > 0.0) { // Edge at west

        float2 d;

        // Find the distance to the top:

        float2 coords;

        coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z);

        coords.x = offset[0].x; // offset[1].x = texcoord.x - 0.25 * SMAA_PIXEL_SIZE.x;

        d.x = coords.y;

        // Fetch the top crossing edges:

        float e1 = SMAASampleLevelZero(edgesTex, coords).g;

        // Find the distance to the bottom:

        coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w);

        d.y = coords.y;

        // We want the distances to be in pixel units:

        d = d / SMAA_PIXEL_SIZE.y - pixcoord.y;

        // SMAAArea below needs a sqrt, as the areas texture is compressed

        // quadratically:

        float2 sqrt_d = sqrt(abs(d));

        // Fetch the bottom crossing edges:

        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, int2(0, 1)).g;

        // Get the area for this direction:

        weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x));

        // Fix corners:

        SMAADetectVerticalCornerPattern(edgesTex, weights.ba, texcoord, d);

    }

    return weights;

}

//-----------------------------------------------------------------------------

// Neighborhood Blending Pixel Shader (Third Pass)

float4 SMAANeighborhoodBlendingPS(float2 texcoord,

                                  float4 offset[2],

                                  SMAATexture2D colorTex,

                                  SMAATexture2D blendTex) {

    // Fetch the blending weights for current pixel:

    float4 a;

    a.xz = SMAASample(blendTex, texcoord).xz;

    a.y = SMAASample(blendTex, offset[1].zw).g;

    a.w = SMAASample(blendTex, offset[1].xy).a;

    // Is there any blending weight with a value greater than 0.0?

    SMAA_BRANCH

    if (dot(a, float4(1.0, 1.0, 1.0, 1.0)) < 1e-5)

        return SMAASampleLevelZero(colorTex, texcoord);

    else {

        float4 color = float4(0.0, 0.0, 0.0, 0.0);

        // Up to 4 lines can be crossing a pixel (one through each edge). We

        // favor blending by choosing the line with the maximum weight for each

        // direction:

        float2 offset;

        offset.x = a.a > a.b? a.a : -a.b; // left vs. right

        offset.y = a.g > a.r? a.g : -a.r; // top vs. bottom

        // Then we go in the direction that has the maximum weight:

        if (abs(offset.x) > abs(offset.y)) // horizontal vs. vertical

            offset.y = 0.0;

        else

            offset.x = 0.0;

        #if SMAA_REPROJECTION == 1

        // Fetch the opposite color and lerp by hand:

        float4 C = SMAASampleLevelZero(colorTex, texcoord);

        texcoord += sign(offset) * SMAA_PIXEL_SIZE;

        float4 Cop = SMAASampleLevelZero(colorTex, texcoord);

        float s = abs(offset.x) > abs(offset.y)? abs(offset.x) : abs(offset.y);

        // Unpack the velocity values:

        C.a *= C.a;

        Cop.a *= Cop.a;

        // Lerp the colors:

        float4 Caa = SMAALerp(C, Cop, s);

        // Unpack velocity and return the resulting value:

        Caa.a = sqrt(Caa.a);

        return Caa;

        #elif SMAA_HLSL_4 == 1 || SMAA_DIRECTX9_LINEAR_BLEND == 0

        // We exploit bilinear filtering to mix current pixel with the chosen

        // neighbor:

        texcoord += offset * SMAA_PIXEL_SIZE;

        return SMAASampleLevelZero(colorTex, texcoord);

        #else

        // Fetch the opposite color and lerp by hand:

        float4 C = SMAASampleLevelZero(colorTex, texcoord);

        texcoord += sign(offset) * SMAA_PIXEL_SIZE;

        float4 Cop = SMAASampleLevelZero(colorTex, texcoord);

        float s = abs(offset.x) > abs(offset.y)? abs(offset.x) : abs(offset.y);

        return SMAALerp(C, Cop, s);

        #endif

    }

}

//-----------------------------------------------------------------------------

// Temporal Resolve Pixel Shader (Optional Pass)

float4 SMAAResolvePS(float2 texcoord,

                     SMAATexture2D colorTexCurr,

                     SMAATexture2D colorTexPrev

                     #if SMAA_REPROJECTION == 1

                     , SMAATexture2D velocityTex

                     #endif

                     ) {

    #if SMAA_REPROJECTION == 1

    // Velocity is calculated from previous to current position, so we need to

    // inverse it:

    float2 velocity = -SMAASample(velocityTex, texcoord).rg;

    // Fetch current pixel:

    float4 current = SMAASample(colorTexCurr, texcoord);

    // Reproject current coordinates and fetch previous pixel:

    float4 previous = SMAASample(colorTexPrev, texcoord + velocity);

    // Attenuate the previous pixel if the velocity is different:

    float delta = abs(current.a * current.a - previous.a * previous.a) / 5.0;

    float weight = 0.5 * SMAASaturate(1.0 - (sqrt(delta) * SMAA_REPROJECTION_WEIGHT_SCALE));

    // Blend the pixels according to the calculated weight:

    return SMAALerp(current, previous, weight);

    #else

    // Just blend the pixels:

    float4 current = SMAASample(colorTexCurr, texcoord);

    float4 previous = SMAASample(colorTexPrev, texcoord);

    return SMAALerp(current, previous, 0.5);

    #endif

}

//-----------------------------------------------------------------------------

// Separate Multisamples Pixel Shader (Optional Pass)

#if SMAA_HLSL_4 == 1 || SMAA_HLSL_4_1 == 1

void SMAASeparatePS(float4 position : SV_POSITION,

                    float2 texcoord : TEXCOORD0,

                    out float4 target0,

                    out float4 target1,

                    uniform SMAATexture2DMS2 colorTexMS) {

    int2 pos = int2(position.xy);

    target0 = SMAALoad(colorTexMS, pos, 0);

    target1 = SMAALoad(colorTexMS, pos, 1);

}

#endif

//-----------------------------------------------------------------------------

#endif // SMAA_ONLY_COMPILE_VS == 0

in vec4 in_vertex;

in vec2 in_texture;

out cross_shader_data

{

  vec2 tex_coord;

  vec4 offset[3];

} o;

void main()

{

    o.tex_coord = in_texture;

    vec4 dummy1, dummy2;

    SMAAEdgeDetectionVS(dummy1, dummy2, o.tex_coord, o.offset);

  gl_Position = modelview * proj * in_vertex;

}

Despite the previous this works:

#version 420 compatibility

#ifndef SMAA_PIXEL_SIZE

#define SMAA_PIXEL_SIZE vec2(1.0 / 800.0, 1.0 / 600.0)

#endif

#define SMAA_PRESET_ULTRA 1

#define SMAA_GLSL_4 1

#define SMAA_ONLY_COMPILE_VS 1

/**

* Copyright (C) 2011 Jorge Jimenez (jorge@iryoku.com)

* Copyright (C) 2011 Belen Masia (bmasia@unizar.es

* Copyright (C) 2011 Jose I. Echevarria (joseignacioechevarria@gmail.com

* Copyright (C) 2011 Fernando Navarro (fernandn@microsoft.com

* Copyright (C) 2011 Diego Gutierrez (diegog@unizar.es)

* All rights reserved.

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions are met:

*    1. Redistributions of source code must retain the above copyright notice,

*       this list of conditions and the following disclaimer.

*    2. Redistributions in binary form must reproduce the following disclaimer

*       in the documentation and/or other materials provided with the 

*       distribution:

*      "Uses SMAA. Copyright (C) 2011 by Jorge Jimenez, Jose I. Echevarria,

*       Belen Masia, Fernando Navarro and Diego Gutierrez."

* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS 

* IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 

* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 

* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS 

* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 

* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 

* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 

* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 

* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 

* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 

* POSSIBILITY OF SUCH DAMAGE.

* The views and conclusions contained in the software and documentation are 

* those of the authors and should not be interpreted as representing official

* policies, either expressed or implied, of the copyright holders.

*/

/**

*                  _______  ___  ___       ___           ___

*                 /       ||   /   |     /            /  

*                |   (---- |    /  |    /  ^         /  ^ 

*                        |  |/|  |   /  /_       /  /_ 

*              ----)   |   |  |  |  |  /  _____     /  _____ 

*             |_______/    |__|  |__| /__/     __ /__/     __

*                               E N H A N C E D

*       S U B P I X E L   M O R P H O L O G I C A L   A N T I A L I A S I N G

*

*                         http://www.iryoku.com/smaa/

*

* Hi, welcome aboard!

* Here you'll find instructions to get the shader up and running as fast as

* possible.

*

* IMPORTANTE NOTICE: when updating, remember to update both this file and the

* precomputed textures! They may change from version to version.

*

* The shader has three passes, chained together as follows:

*

*                           |input|------------------·

*                              v                     |

*                    [ SMAA*EdgeDetection ]          |

*                              v                     |

*                          |edgesTex|                |

*                              v                     |

*              [ SMAABlendingWeightCalculation ]     |

*                              v                     |

*                          |blendTex|                |

*                              v                     |

*                [ SMAANeighborhoodBlending ] <------·

*                              v

*                           |output|

*

* Note that each [pass] has its own vertex and pixel shader.

*

* You've three edge detection methods to choose from: luma, color or depth.

* They represent different quality/performance and anti-aliasing/sharpness

* tradeoffs, so our recommendation is for you to choose the one that best

* suits your particular scenario:

*

* - Depth edge detection is usually the fastest but it may miss some edges.

*

* - Luma edge detection is usually more expensive than depth edge detection,

*   but catches visible edges that depth edge detection can miss.

*

* - Color edge detection is usually the most expensive one but catches

*   chroma-only edges.

*

* For quickstarters: just use luma edge detection.

*

* The general advice is to not rush the integration process and ensure each

* step is done correctly (don't try to integrate SMAA T2x with predicated edge

* detection from the start!). Ok then, let's go!

*

*  1. The first step is to create two RGBA temporal framebuffers for holding

*     |edgesTex| and |blendTex|.

*

*     In DX10, you can use a RG framebuffer for the edges texture, but in our

*     experience it yields worse performance.

*

*     On the Xbox 360, you can use the same framebuffer for resolving both

*     |edgesTex| and |blendTex|, as they aren't needed simultaneously.

*

*  2. Both temporal framebuffers |edgesTex| and |blendTex| must be cleared

*     each frame. Do not forget to clear the alpha channel!

*

*  3. The next step is loading the two supporting precalculated textures,

*     'areaTex' and 'searchTex'. You'll find them in the 'Textures' folder as

*     C++ headers, and also as regular DDS files. They'll be needed for the

*     'SMAABlendingWeightCalculation' pass.

*

*     If you use the C++ headers, be sure to load them in the format specified

*     inside of them.

*

*  4. In DX9, all samplers must be set to linear filtering and clamp, with the

*     exception of 'searchTex', which must be set to point filtering.

*

*  5. All texture reads and buffer writes must be non-sRGB, with the exception

*     of the input read and the output write of input in 

*     'SMAANeighborhoodBlending' (and only in this pass!). If sRGB reads in

*     this last pass are not possible, the technique will work anyway, but

*     will perform antialiasing in gamma space. 

*

*     IMPORTANT: for best results the input read for the color/luma edge 

*     detection should *NOT* be sRGB.

*

*  6. Before including SMAA.h you'll have to setup the framebuffer pixel size,

*     the target and any optional configuration defines. Optionally you can

*     use a preset.

*

*     You have three targets available: 

*         SMAA_HLSL_3

*         SMAA_HLSL_4

*         SMAA_HLSL_4_1

*         SMAA_GLSL_3 *

*         SMAA_GLSL_4 *

*

*         * (See SMAA_ONLY_COMPILE_VS below).

*

*     And four presets:

*         SMAA_PRESET_LOW          (%60 of the quality)

*         SMAA_PRESET_MEDIUM       (%80 of the quality)

*         SMAA_PRESET_HIGH         (%95 of the quality)

*         SMAA_PRESET_ULTRA        (%99 of the quality)

*

*     For example:

*         #define SMAA_PIXEL_SIZE float2(1.0 / 1280.0, 1.0 / 720.0)

*         #define SMAA_HLSL_4 1 

*         #define SMAA_PRESET_HIGH 1

*         #include "SMAA.h"

*

*  7. Then, you'll have to setup the passes as indicated in the scheme above.

*     You can take a look into SMAA.fx, to see how we did it for our demo.

*     Checkout the function wrappers, you may want to copy-paste them!

*

*  8. It's recommended to validate the produced |edgesTex| and |blendTex|.

*     It's advised to not continue with the implementation until both buffers

*     are verified to produce identical results to our reference demo.

*

*  9. After you get the last pass to work, it's time to optimize. You'll have

*     to initialize a stencil buffer in the first pass (discard is already in

*     the code), then mask execution by using it the second pass. The last

*     pass should be executed in all pixels.

*

*

* After this point you can choose to enable predicated thresholding,

* temporal supersampling and motion blur integration:

*

* a) If you want to use predicated thresholding, take a look into

*    SMAA_PREDICATION; you'll need to pass an extra texture in the edge

*    detection pass.

*

* b) If you want to enable temporal supersampling (SMAA T2x):

*

* 1. The first step is to render using subpixel jitters. I won't go into

*    detail, but it's as simple as moving each vertex position in the

*    vertex shader, you can check how we do it in our DX10 demo.

*

* 2. Then, you must setup the temporal resolve. You may want to take a look

*    into SMAAResolve for resolving 2x modes. After you get it working, you'll

*    probably see ghosting everywhere. But fear not, you can enable the

*    CryENGINE temporal reprojection by setting the SMAA_REPROJECTION macro.

*

* 3. The next step is to apply SMAA to each subpixel jittered frame, just as

*    done for 1x.

*

* 4. At this point you should already have something usable, but for best

*    results the proper area textures must be set depending on current jitter.

*    For this, the parameter 'subsampleIndices' of

*    'SMAABlendingWeightCalculationPS' must be set as follows, for our T2x

*    mode:

*

*    @SUBSAMPLE_INDICES

*

*    | S# |  Camera Jitter   |  subsampleIndices  |

*    +----+------------------+--------------------+

*    |  0 |  ( 0.25, -0.25)  |  int4(1, 1, 1, 0)  |

*    |  1 |  (-0.25,  0.25)  |  int4(2, 2, 2, 0)  |

*

*    These jitter positions assume a bottom-to-top y axis. S# stands for the

*    sample number.

*

* More information about temporal supersampling here:

*    http://iryoku.com/aacourse/downloads/13-Anti-Aliasing-Methods-in-CryENGINE-3.pdf

*

* c) If you want to enable spatial multisampling (SMAA S2x):

*

* 1. The scene must be rendered using MSAA 2x. The MSAA 2x buffer must be

*    created with:

*      - DX10:     see below (*)

*      - DX10.1:   D3D10_STANDARD_MULTISAMPLE_PATTERN or

*      - DX11:     D3D11_STANDARD_MULTISAMPLE_PATTERN

*

*    This allows to ensure that the subsample order matches the table in

*    @SUBSAMPLE_INDICES.

*

*    (*) In the case of DX10, we refer the reader to:

*      - SMAA::detectMSAAOrder and

*      - SMAA::msaaReorder

*

*    These functions allow to match the standard multisample patterns by

*    detecting the subsample order for a specific GPU, and reordering

*    them appropriately.

*

* 2. A shader must be run to output each subsample into a separate buffer

*    (DX10 is required). You can use SMAASeparate for this purpose, or just do

*    it in an existing pass (for example, in the tone mapping pass).

*

* 3. The full SMAA 1x pipeline must be run for each separated buffer, storing

*    the results in the final buffer. The second run should alpha blend with

*    the existing final buffer using a blending factor of 0.5.

*    'subsampleIndices' must be adjusted as in the SMAA T2x case (see point

*    b).

*

* d) If you want to enable temporal supersampling on top of SMAA S2x

*    (which actually is SMAA 4x):

*

* 1. SMAA 4x consists on temporally jittering SMAA S2x, so the first step is

*    to calculate SMAA S2x for current frame. In this case, 'subsampleIndices'

*    must be set as follows:

*

*    | F# | S# |   Camera Jitter    |    Net Jitter     |  subsampleIndices  |

*    +----+----+--------------------+-------------------+--------------------+

*    |  0 |  0 |  ( 0.125,  0.125)  |  ( 0.375, -0.125) |  int4(5, 3, 1, 3)  |

*    |  0 |  1 |  ( 0.125,  0.125)  |  (-0.125,  0.375) |  int4(4, 6, 2, 3)  |

*    +----+----+--------------------+-------------------+--------------------+

*    |  1 |  2 |  (-0.125, -0.125)  |  ( 0.125, -0.375) |  int4(3, 5, 1, 4)  |

*    |  1 |  3 |  (-0.125, -0.125)  |  (-0.375,  0.125) |  int4(6, 4, 2, 4)  |

*

*    These jitter positions assume a bottom-to-top y axis. F# stands for the

*    frame number. S# stands for the sample number.

*

* 2. After calculating SMAA S2x for current frame (with the new subsample

*    indices), previous frame must be reprojected as in SMAA T2x mode (see

*    point b).

*

* e) If motion blur is used, you may want to do the edge detection pass

*    together with motion blur. This has two advantages:

*

* 1. Pixels under heavy motion can be omitted from the edge detection process.

*    For these pixels we can just store "no edge", as motion blur will take

*    care of them.

* 2. The center pixel tap is reused.

*

* Note that in this case depth testing should be used instead of stenciling,

* as we have to write all the pixels in the motion blur pass.

*

* That's it!

*/

//-----------------------------------------------------------------------------

// SMAA Presets

/**

* Note that if you use one of these presets, the corresponding macros below

* won't be used.

*/

#if SMAA_PRESET_LOW == 1

#define SMAA_THRESHOLD 0.15

#define SMAA_MAX_SEARCH_STEPS 4

#define SMAA_MAX_SEARCH_STEPS_DIAG 0

#define SMAA_CORNER_ROUNDING 100

#elif SMAA_PRESET_MEDIUM == 1

#define SMAA_THRESHOLD 0.1

#define SMAA_MAX_SEARCH_STEPS 8

#define SMAA_MAX_SEARCH_STEPS_DIAG 0

#define SMAA_CORNER_ROUNDING 100

#elif SMAA_PRESET_HIGH == 1

#define SMAA_THRESHOLD 0.1

#define SMAA_MAX_SEARCH_STEPS 16

#define SMAA_MAX_SEARCH_STEPS_DIAG 8

#define SMAA_CORNER_ROUNDING 25

#elif SMAA_PRESET_ULTRA == 1

#define SMAA_THRESHOLD 0.05

#define SMAA_MAX_SEARCH_STEPS 32

#define SMAA_MAX_SEARCH_STEPS_DIAG 16

#define SMAA_CORNER_ROUNDING 25

#endif

//-----------------------------------------------------------------------------

// Configurable Defines

/**

* SMAA_THRESHOLD specifies the threshold or sensitivity to edges.

* Lowering this value you will be able to detect more edges at the expense of

* performance. 

*

* Range: [0, 0.5]

*   0.1 is a reasonable value, and allows to catch most visible edges.

*   0.05 is a rather overkill value, that allows to catch 'em all.

*

*   If temporal supersampling is used, 0.2 could be a reasonable value, as low

*   contrast edges are properly filtered by just 2x.

*/

#ifndef SMAA_THRESHOLD

#define SMAA_THRESHOLD 0.1

#endif

/**

* SMAA_DEPTH_THRESHOLD specifies the threshold for depth edge detection.

* Range: depends on the depth range of the scene.

*/

#ifndef SMAA_DEPTH_THRESHOLD

#define SMAA_DEPTH_THRESHOLD (0.1 * SMAA_THRESHOLD)

#endif

/**

* SMAA_MAX_SEARCH_STEPS specifies the maximum steps performed in the

* horizontal/vertical pattern searches, at each side of the pixel.

*

* In number of pixels, it's actually the double. So the maximum line length

* perfectly handled by, for example 16, is 64 (by perfectly, we meant that

* longer lines won't look as good, but still antialiased).

*

* Range: [0, 98]

*/

#ifndef SMAA_MAX_SEARCH_STEPS

#define SMAA_MAX_SEARCH_STEPS 16

#endif

/**

* SMAA_MAX_SEARCH_STEPS_DIAG specifies the maximum steps performed in the

* diagonal pattern searches, at each side of the pixel. In this case we jump

* one pixel at time, instead of two.

*

* Range: [0, 20]; set it to 0 to disable diagonal processing.

*

* On high-end machines it is cheap (between a 0.8x and 0.9x slower for 16 

* steps), but it can have a significant impact on older machines.

*/

#ifndef SMAA_MAX_SEARCH_STEPS_DIAG

#define SMAA_MAX_SEARCH_STEPS_DIAG 8

#endif

/**

* SMAA_CORNER_ROUNDING specifies how much sharp corners will be rounded.

*

* Range: [0, 100]; set it to 100 to disable corner detection.

*/

#ifndef SMAA_CORNER_ROUNDING

#define SMAA_CORNER_ROUNDING 25

#endif

/**

* Predicated thresholding allows to better preserve texture details and to

* improve performance, by decreasing the number of detected edges using an

* additional buffer like the light accumulation buffer, object ids or even the

* depth buffer (the depth buffer usage may be limited to indoor or short range

* scenes).

*

* It locally decreases the luma or color threshold if an edge is found in an

* additional buffer (so the global threshold can be higher).

*

* This method was developed by Playstation EDGE MLAA team, and used in 

* Killzone 3, by using the light accumulation buffer. More information here:

*     http://iryoku.com/aacourse/downloads/06-MLAA-on-PS3.pptx 

*/

#ifndef SMAA_PREDICATION

#define SMAA_PREDICATION 0

#endif

/**

* Threshold to be used in the additional predication buffer. 

*

* Range: depends on the input, so you'll have to find the magic number that

* works for you.

*/

#ifndef SMAA_PREDICATION_THRESHOLD

#define SMAA_PREDICATION_THRESHOLD 0.01

#endif

/**

* How much to scale the global threshold used for luma or color edge

* detection when using predication.

*

* Range: [1, 5]

*/

#ifndef SMAA_PREDICATION_SCALE

#define SMAA_PREDICATION_SCALE 2.0

#endif

/**

* How much to locally decrease the threshold.

*

* Range: [0, 1]

*/

#ifndef SMAA_PREDICATION_STRENGTH

#define SMAA_PREDICATION_STRENGTH 0.4

#endif

/**

* Temporal reprojection allows to remove ghosting artifacts when using

* temporal supersampling. We use the CryEngine 3 method which also introduces

* velocity weighting. This feature is of extreme importance for totally

* removing ghosting. More information here:

*    http://iryoku.com/aacourse/downloads/13-Anti-Aliasing-Methods-in-CryENGINE-3.pdf

*

* Note that you'll need to setup a velocity buffer for enabling reprojection.

* For static geometry, saving the previous depth buffer is a viable

* alternative.

*/

#ifndef SMAA_REPROJECTION

#define SMAA_REPROJECTION 0

#endif

/**

* SMAA_REPROJECTION_WEIGHT_SCALE controls the velocity weighting. It allows to

* remove ghosting trails behind the moving object, which are not removed by

* just using reprojection. Using low values will exhibit ghosting, while using

* high values will disable temporal supersampling under motion.

*

* Behind the scenes, velocity weighting removes temporal supersampling when

* the velocity of the subsamples differs (meaning they are different objects).

*

* Range: [0, 80]

*/

#define SMAA_REPROJECTION_WEIGHT_SCALE 30.0

/**

* In the last pass we leverage bilinear filtering to avoid some lerps.

* However, bilinear filtering is done in gamma space in DX9, under DX9

* hardware (but not in DX9 code running on DX10 hardware), which gives

* inaccurate results.

*

* So, if you are in DX9, under DX9 hardware, and do you want accurate linear

* blending, you must set this flag to 1.

*

* It's ignored when using SMAA_HLSL_4, and of course, only has sense when

* using sRGB read and writes on the last pass.

*/

#ifndef SMAA_DIRECTX9_LINEAR_BLEND

#define SMAA_DIRECTX9_LINEAR_BLEND 0

#endif

/**

* On ATI compilers, discard cannot be used in vertex shaders. Thus, they need

* to be compiled separately. These macros allow to easily accomplish it.

*/

#ifndef SMAA_ONLY_COMPILE_VS

#define SMAA_ONLY_COMPILE_VS 0

#endif

#ifndef SMAA_ONLY_COMPILE_PS

#define SMAA_ONLY_COMPILE_PS 0

#endif

//-----------------------------------------------------------------------------

// Non-Configurable Defines

#ifndef SMAA_AREATEX_MAX_DISTANCE

#define SMAA_AREATEX_MAX_DISTANCE 16

#endif

#ifndef SMAA_AREATEX_MAX_DISTANCE_DIAG

#define SMAA_AREATEX_MAX_DISTANCE_DIAG 20

#endif

#define SMAA_AREATEX_PIXEL_SIZE (1.0 / float2(160.0, 560.0))

#define SMAA_AREATEX_SUBTEX_SIZE (1.0 / 7.0)

//-----------------------------------------------------------------------------

// Porting Functions

#if SMAA_HLSL_3 == 1

#define SMAATexture2D sampler2D

#define SMAASampleLevelZero(tex, coord) tex2Dlod(tex, float4(coord, 0.0, 0.0))

#define SMAASampleLevelZeroPoint(tex, coord) tex2Dlod(tex, float4(coord, 0.0, 0.0))

#define SMAASample(tex, coord) tex2D(tex, coord)

#define SMAASamplePoint(tex, coord) tex2D(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) tex2Dlod(tex, float4(coord + offset * SMAA_PIXEL_SIZE, 0.0, 0.0))

#define SMAASampleOffset(tex, coord, offset) tex2D(tex, coord + offset * SMAA_PIXEL_SIZE)

#define SMAALerp(a, b, t) lerp(a, b, t)

#define SMAASaturate(a) saturate(a)

#define SMAAMad(a, b, c) mad(a, b, c)

#define SMAA_FLATTEN [flatten]

#define SMAA_BRANCH [branch]

#endif

#if SMAA_HLSL_4 == 1 || SMAA_HLSL_4_1 == 1

SamplerState LinearSampler { Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = Clamp; AddressV = Clamp; };

SamplerState PointSampler { Filter = MIN_MAG_MIP_POINT; AddressU = Clamp; AddressV = Clamp; };

#define SMAATexture2D Texture2D

#define SMAASampleLevelZero(tex, coord) tex.SampleLevel(LinearSampler, coord, 0)

#define SMAASampleLevelZeroPoint(tex, coord) tex.SampleLevel(PointSampler, coord, 0)

#define SMAASample(tex, coord) SMAASampleLevelZero(tex, coord)

#define SMAASamplePoint(tex, coord) SMAASampleLevelZeroPoint(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) tex.SampleLevel(LinearSampler, coord, 0, offset)

#define SMAASampleOffset(tex, coord, offset) SMAASampleLevelZeroOffset(tex, coord, offset)

#define SMAALerp(a, b, t) lerp(a, b, t)

#define SMAASaturate(a) saturate(a)

#define SMAAMad(a, b, c) mad(a, b, c)

#define SMAA_FLATTEN [flatten]

#define SMAA_BRANCH [branch]

#define SMAATexture2DMS2 Texture2DMS<float4, 2>

#define SMAALoad(tex, pos, sample) tex.Load(pos, sample)

#endif

#if SMAA_HLSL_4_1 == 1

#define SMAAGather(tex, coord) tex.Gather(LinearSampler, coord, 0)

#endif

#if SMAA_GLSL_3 == 1 || SMAA_GLSL_4 == 1

#define SMAATexture2D sampler2D

#define SMAASampleLevelZero(tex, coord) textureLod(tex, coord, 0.0)

#define SMAASampleLevelZeroPoint(tex, coord) textureLod(tex, coord, 0.0)

#define SMAASample(tex, coord) texture(tex, coord)

#define SMAASamplePoint(tex, coord) texture(tex, coord)

#define SMAASampleLevelZeroOffset(tex, coord, offset) textureLodOffset(tex, coord, 0.0, offset)

#define SMAASampleOffset(tex, coord, offset) texture(tex, coord, offset)

#define SMAALerp(a, b, t) mix(a, b, t)

#define SMAASaturate(a) clamp(a, 0.0, 1.0)

#define SMAA_FLATTEN

#define SMAA_BRANCH

#define float2 vec2

#define float3 vec3

#define float4 vec4

#define int2 ivec2

#define int3 ivec3

#define int4 ivec4

#endif

#if SMAA_GLSL_3 == 1

#define SMAAMad(a, b, c) (a * b + c)

#endif

#if SMAA_GLSL_4 == 1

#define SMAAMad(a, b, c) fma(a, b, c)

#define SMAAGather(tex, coord) textureGather(tex, coord)

#endif

//-----------------------------------------------------------------------------

// Misc functions

/**

* Gathers current pixel, and the top-left neighbors.

*/

float3 SMAAGatherNeighbours(float2 texcoord,

                            float4 offset[3],

                            SMAATexture2D tex) {

    #if SMAA_HLSL_4_1 == 1 || SMAA_GLSL_4 == 1

    return SMAAGather(tex, texcoord + SMAA_PIXEL_SIZE * float2(-0.5, -0.5)).grb;

    #else

    float P = SMAASample(tex, texcoord).r;

    float Pleft = SMAASample(tex, offset[0].xy).r;

    float Ptop  = SMAASample(tex, offset[0].zw).r;

    return float3(P, Pleft, Ptop);

    #endif

}

/**

* Adjusts the threshold by means of predication.

*/

float2 SMAACalculatePredicatedThreshold(float2 texcoord,

                                        float4 offset[3],

                                        SMAATexture2D colorTex,

                                        SMAATexture2D predicationTex) {

    float3 neighbours = SMAAGatherNeighbours(texcoord, offset, predicationTex);

    float2 delta = abs(neighbours.xx - neighbours.yz);

    float2 edges = step(SMAA_PREDICATION_THRESHOLD, delta);

    return SMAA_PREDICATION_SCALE * SMAA_THRESHOLD * (1.0 - SMAA_PREDICATION_STRENGTH * edges);

}

#if SMAA_ONLY_COMPILE_PS == 0

//-----------------------------------------------------------------------------

// Vertex Shaders

/**

* Edge Detection Vertex Shader

*/

void SMAAEdgeDetectionVS(float4 position,

                         out float4 svPosition,

                         inout float2 texcoord,

                         out float4 offset[3]) {

    svPosition = position;

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-1.0, 0.0, 0.0, -1.0);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4( 1.0, 0.0, 0.0,  1.0);

    offset[2] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-2.0, 0.0, 0.0, -2.0);

}

/**

* Blend Weight Calculation Vertex Shader

*/

void SMAABlendingWeightCalculationVS(float4 position,

                                     out float4 svPosition,

                                     inout float2 texcoord,

                                     out float2 pixcoord,

                                     out float4 offset[3]) {

    svPosition = position;

    pixcoord = texcoord / SMAA_PIXEL_SIZE;

    // We will use these offsets for the searches later on (see @PSEUDO_GATHER4):

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-0.25, -0.125,  1.25, -0.125);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-0.125, -0.25, -0.125,  1.25);

    // And these for the searches, they indicate the ends of the loops:

    offset[2] = float4(offset[0].xz, offset[1].yw) + 

                float4(-2.0, 2.0, -2.0, 2.0) *

                SMAA_PIXEL_SIZE.xxyy * float(SMAA_MAX_SEARCH_STEPS);

}

/**

* Neighborhood Blending Vertex Shader

*/

void SMAANeighborhoodBlendingVS(float4 position,

                                out float4 svPosition,

                                inout float2 texcoord,

                                out float4 offset[2]) {

    svPosition = position;

    offset[0] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4(-1.0, 0.0, 0.0, -1.0);

    offset[1] = texcoord.xyxy + SMAA_PIXEL_SIZE.xyxy * float4( 1.0, 0.0, 0.0,  1.0);

}

/**

* Resolve Vertex Shader

*/

void SMAAResolveVS(float4 position,

                   out float4 svPosition,

                   inout float2 texcoord) {

    svPosition = position;

}

/**

* Separate Vertex Shader

*/

void SMAASeparateVS(float4 position,

                    out float4 svPosition,

                    inout float2 texcoord) {

    svPosition = position;

}

#endif // SMAA_ONLY_COMPILE_PS == 0

#if SMAA_ONLY_COMPILE_VS == 0

//-----------------------------------------------------------------------------

// Edge Detection Pixel Shaders (First Pass)

/**

* Luma Edge Detection

*

* IMPORTANT NOTICE: luma edge detection requires gamma-corrected colors, and

* thus 'colorTex' should be a non-sRGB texture.

*/

float4 SMAALumaEdgeDetectionPS(float2 texcoord,

                               float4 offset[3],

                               SMAATexture2D colorTex

                               #if SMAA_PREDICATION == 1

                               , SMAATexture2D predicationTex

                               #endif

                               ) {

    // Calculate the threshold:

    #if SMAA_PREDICATION == 1

    float2 threshold = SMAACalculatePredicatedThreshold(texcoord, offset, colorTex, predicationTex);

    #else

    float2 threshold = float2(SMAA_THRESHOLD, SMAA_THRESHOLD);

    #endif

    // Calculate lumas:

    float3 weights = float3(0.2126, 0.7152, 0.0722);

    float L = dot(SMAASample(colorTex, texcoord).rgb, weights);

    float Lleft = dot(SMAASample(colorTex, offset[0].xy).rgb, weights);

    float Ltop  = dot(SMAASample(colorTex, offset[0].zw).rgb, weights);

    // We do the usual threshold:

    float4 delta;

    delta.xy = abs(L - float2(Lleft, Ltop));

    float2 edges = step(threshold, delta.xy);

    // Then discard if there is no edge:

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    // Calculate right and bottom deltas:

    float Lright = dot(SMAASample(colorTex, offset[1].xy).rgb, weights);

    float Lbottom  = dot(SMAASample(colorTex, offset[1].zw).rgb, weights);

    delta.zw = abs(L - float2(Lright, Lbottom));

    // Calculate the maximum delta in the direct neighborhood:

    float2 maxDelta = max(delta.xy, delta.zw);

    maxDelta = max(maxDelta.xx, maxDelta.yy);

    // Calculate left-left and top-top deltas:

    float Lleftleft = dot(SMAASample(colorTex, offset[2].xy).rgb, weights);

    float Ltoptop = dot(SMAASample(colorTex, offset[2].zw).rgb, weights);

    delta.zw = abs(float2(Lleft, Ltop) - float2(Lleftleft, Ltoptop));

    // Calculate the final maximum delta:

    maxDelta = max(maxDelta.xy, delta.zw);

    /**

     * Each edge with a delta in luma of less than 50% of the maximum luma

     * surrounding this pixel is discarded. This allows to eliminate spurious

     * crossing edges, and is based on the fact that, if there is too much

     * contrast in a direction, that will hide contrast in the other

     * neighbors.

     * This is done after the discard intentionally as this situation doesn't

     * happen too frequently (but it's important to do as it prevents some 

     * edges from going undetected).

     */

    edges.xy *= step(0.5 * maxDelta, delta.xy);

    return float4(edges, 0.0, 0.0);

}

/**

* Color Edge Detection

*

* IMPORTANT NOTICE: color edge detection requires gamma-corrected colors, and

* thus 'colorTex' should be a non-sRGB texture.

*/

float4 SMAAColorEdgeDetectionPS(float2 texcoord,

                                float4 offset[3],

                                SMAATexture2D colorTex

                                #if SMAA_PREDICATION == 1

                                , SMAATexture2D predicationTex

                                #endif

                                ) {

    // Calculate the threshold:

    #if SMAA_PREDICATION == 1

    float2 threshold = SMAACalculatePredicatedThreshold(texcoord, offset, colorTex, predicationTex);

    #else

    float2 threshold = float2(SMAA_THRESHOLD, SMAA_THRESHOLD);

    #endif

    // Calculate color deltas:

    float4 delta;

    float3 C = SMAASample(colorTex, texcoord).rgb;

    float3 Cleft = SMAASample(colorTex, offset[0].xy).rgb;

    float3 t = abs(C - Cleft);

    delta.x = max(max(t.r, t.g), t.b);

    float3 Ctop  = SMAASample(colorTex, offset[0].zw).rgb;

    t = abs(C - Ctop);

    delta.y = max(max(t.r, t.g), t.b);

    // We do the usual threshold:

    float2 edges = step(threshold, delta.xy);

    // Then discard if there is no edge:

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    // Calculate right and bottom deltas:

    float3 Cright = SMAASample(colorTex, offset[1].xy).rgb;

    t = abs(C - Cright);

    delta.z = max(max(t.r, t.g), t.b);

    float3 Cbottom  = SMAASample(colorTex, offset[1].zw).rgb;

    t = abs(C - Cbottom);

    delta.w = max(max(t.r, t.g), t.b);

    // Calculate the maximum delta in the direct neighborhood:

    float maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w);

    // Calculate left-left and top-top deltas:

    float3 Cleftleft  = SMAASample(colorTex, offset[2].xy).rgb;

    t = abs(C - Cleftleft);

    delta.z = max(max(t.r, t.g), t.b);

    float3 Ctoptop = SMAASample(colorTex, offset[2].zw).rgb;

    t = abs(C - Ctoptop);

    delta.w = max(max(t.r, t.g), t.b);

    // Calculate the final maximum delta:

    maxDelta = max(max(maxDelta, delta.z), delta.w);

    // Local contrast adaptation in action:

    edges.xy *= step(0.5 * maxDelta, delta.xy);

    return float4(edges, 0.0, 0.0);

}

/**

* Depth Edge Detection

*/

float4 SMAADepthEdgeDetectionPS(float2 texcoord,

                                float4 offset[3],

                                SMAATexture2D depthTex) {

    float3 neighbours = SMAAGatherNeighbours(texcoord, offset, depthTex);

    float2 delta = abs(neighbours.xx - float2(neighbours.y, neighbours.z));

    float2 edges = step(SMAA_DEPTH_THRESHOLD, delta);

    if (dot(edges, float2(1.0, 1.0)) == 0.0)

        discard;

    return float4(edges, 0.0, 0.0);

}

//-----------------------------------------------------------------------------

// Diagonal Search Functions

#if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

/**

* These functions allows to perform diagonal pattern searches.

*/

float SMAASearchDiag1(SMAATexture2D edgesTex, float2 texcoord, float2 dir, float c) {

    texcoord += dir * SMAA_PIXEL_SIZE;

    float2 e = float2(0.0, 0.0);

    float i;

    for (i = 0.0; i < float(SMAA_MAX_SEARCH_STEPS_DIAG); i++) {

        e.rg = SMAASampleLevelZero(edgesTex, texcoord).rg;

        SMAA_FLATTEN if (dot(e, float2(1.0, 1.0)) < 1.9) break;

        texcoord += dir * SMAA_PIXEL_SIZE;

    }

    return i + float(e.g > 0.9) * c;

}

float SMAASearchDiag2(SMAATexture2D edgesTex, float2 texcoord, float2 dir, float c) {

    texcoord += dir * SMAA_PIXEL_SIZE;

    float2 e = float2(0.0, 0.0);

    float i;

    for (i = 0.0; i < float(SMAA_MAX_SEARCH_STEPS_DIAG); i++) {

        e.g = SMAASampleLevelZero(edgesTex, texcoord).g;

        e.r = SMAASampleLevelZeroOffset(edgesTex, texcoord, int2(1, 0)).r;

        SMAA_FLATTEN if (dot(e, float2(1.0, 1.0)) < 1.9) break;

        texcoord += dir * SMAA_PIXEL_SIZE;

    }

    return i + float(e.g > 0.9) * c;

}

/** 

* Similar to SMAAArea, this calculates the area corresponding to a certain

* diagonal distance and crossing edges 'e'.

*/

float2 SMAAAreaDiag(SMAATexture2D areaTex, float2 dist, float2 e, float offset) {

    float2 texcoord = float(SMAA_AREATEX_MAX_DISTANCE_DIAG) * e + dist;

    // We do a scale and bias for mapping to texel space:

    texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);

    // Diagonal areas are on the second half of the texture:

    texcoord.x += 0.5;

    // Move to proper place, according to the subpixel offset:

    texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;

    // Do it!

    #if SMAA_HLSL_3 == 1

    return SMAASampleLevelZero(areaTex, texcoord).ra;

    #else

    return SMAASampleLevelZero(areaTex, texcoord).rg;

    #endif

}

/**

* This searches for diagonal patterns and returns the corresponding weights.

*/

float2 SMAACalculateDiagWeights(SMAATexture2D edgesTex, SMAATexture2D areaTex, float2 texcoord, float2 e, int4 subsampleIndices) {

    float2 weights = float2(0.0, 0.0);

    float2 d;

    d.x = e.r > 0.0? SMAASearchDiag1(edgesTex, texcoord, float2(-1.0,  1.0), 1.0) : 0.0;

    d.y = SMAASearchDiag1(edgesTex, texcoord, float2(1.0, -1.0), 0.0);

    SMAA_BRANCH

    if (d.r + d.g > 2.0) { // d.r + d.g + 1 > 3

        float4 coords = SMAAMad(float4(-d.r, d.r, d.g, -d.g), SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

        float4 c;

        c.x = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1,  0)).g;

        c.y = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 0,  0)).r;

        c.z = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1,  0)).g;

        c.w = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1, -1)).r;

        float2 e = 2.0 * c.xz + c.yw;

        float t = float(SMAA_MAX_SEARCH_STEPS_DIAG) - 1.0;

        e *= step(d.rg, float2(t, t));

        weights += SMAAAreaDiag(areaTex, d, e, float(subsampleIndices.z));

    }

    d.x = SMAASearchDiag2(edgesTex, texcoord, float2(-1.0, -1.0), 0.0);

    float right = SMAASampleLevelZeroOffset(edgesTex, texcoord, int2(1, 0)).r;

    d.y = right > 0.0? SMAASearchDiag2(edgesTex, texcoord, float2(1.0, 1.0), 1.0) : 0.0;

    SMAA_BRANCH

    if (d.r + d.g > 2.0) { // d.r + d.g + 1 > 3

        float4 coords = SMAAMad(float4(-d.r, -d.r, d.g, d.g), SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

        float4 c;

        c.x  = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-1,  0)).g;

        c.y  = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 0, -1)).r;

        c.zw = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1,  0)).gr;

        float2 e = 2.0 * c.xz + c.yw;

        float t = float(SMAA_MAX_SEARCH_STEPS_DIAG) - 1.0;

        e *= step(d.rg, float2(t, t));

        weights += SMAAAreaDiag(areaTex, d, e, float(subsampleIndices.w)).gr;

    }

    return weights;

}

#endif

//-----------------------------------------------------------------------------

// Horizontal/Vertical Search Functions

/**

* This allows to determine how much length should we add in the last step

* of the searches. It takes the bilinearly interpolated edge (see 

* @PSEUDO_GATHER4), and adds 0, 1 or 2, depending on which edges and

* crossing edges are active.

*/

float SMAASearchLength(SMAATexture2D searchTex, float2 e, float bias, float scale) {

    // Not required if searchTex accesses are set to point:

    // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0);

    // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + 

    //     e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;

    e.r = bias + e.r * scale;

    return 255.0 * SMAASampleLevelZeroPoint(searchTex, e).r;

}

/**

* Horizontal/vertical search functions for the 2nd pass.

*/

float SMAASearchXLeft(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    /**

     * @PSEUDO_GATHER4

     * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to

     * sample between edge, thus fetching four edges in a row.

     * Sampling with different offsets in each direction allows to disambiguate

     * which edges are active from the four fetched ones.

     */

    float2 e = float2(0.0, 1.0);

    while (texcoord.x > end && 

           e.g > 0.8281 && // Is there some edge not activated?

           e.r == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord -= float2(2.0, 0.0) * SMAA_PIXEL_SIZE;

    }

    // We correct the previous (-0.25, -0.125) offset we applied:

    texcoord.x += 0.25 * SMAA_PIXEL_SIZE.x;

    // The searches are bias by 1, so adjust the coords accordingly:

    texcoord.x += SMAA_PIXEL_SIZE.x;

    // Disambiguate the length added by the last step:

    texcoord.x += 2.0 * SMAA_PIXEL_SIZE.x; // Undo last step

    texcoord.x -= SMAA_PIXEL_SIZE.x * SMAASearchLength(searchTex, e, 0.0, 0.5);

    return texcoord.x;

}

float SMAASearchXRight(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(0.0, 1.0);

    while (texcoord.x < end && 

           e.g > 0.8281 && // Is there some edge not activated?

           e.r == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord += float2(2.0, 0.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.x -= 0.25 * SMAA_PIXEL_SIZE.x;

    texcoord.x -= SMAA_PIXEL_SIZE.x;

    texcoord.x -= 2.0 * SMAA_PIXEL_SIZE.x;

    texcoord.x += SMAA_PIXEL_SIZE.x * SMAASearchLength(searchTex, e, 0.5, 0.5);

    return texcoord.x;

}

float SMAASearchYUp(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(1.0, 0.0);

    while (texcoord.y > end && 

           e.r > 0.8281 && // Is there some edge not activated?

           e.g == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord -= float2(0.0, 2.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.y += 0.25 * SMAA_PIXEL_SIZE.y;

    texcoord.y += SMAA_PIXEL_SIZE.y;

    texcoord.y += 2.0 * SMAA_PIXEL_SIZE.y;

    texcoord.y -= SMAA_PIXEL_SIZE.y * SMAASearchLength(searchTex, e.gr, 0.0, 0.5);

    return texcoord.y;

}

float SMAASearchYDown(SMAATexture2D edgesTex, SMAATexture2D searchTex, float2 texcoord, float end) {

    float2 e = float2(1.0, 0.0);

    while (texcoord.y < end && 

           e.r > 0.8281 && // Is there some edge not activated?

           e.g == 0.0) { // Or is there a crossing edge that breaks the line?

        e = SMAASampleLevelZero(edgesTex, texcoord).rg;

        texcoord += float2(0.0, 2.0) * SMAA_PIXEL_SIZE;

    }

    texcoord.y -= 0.25 * SMAA_PIXEL_SIZE.y;

    texcoord.y -= SMAA_PIXEL_SIZE.y;

    texcoord.y -= 2.0 * SMAA_PIXEL_SIZE.y;

    texcoord.y += SMAA_PIXEL_SIZE.y * SMAASearchLength(searchTex, e.gr, 0.5, 0.5);

    return texcoord.y;

}

/** 

* Ok, we have the distance and both crossing edges. So, what are the areas

* at each side of current edge?

*/

float2 SMAAArea(SMAATexture2D areaTex, float2 dist, float e1, float e2, float offset) {

    // Rounding prevents precision errors of bilinear filtering:

    float2 texcoord = float(SMAA_AREATEX_MAX_DISTANCE) * round(4.0 * float2(e1, e2)) + dist;

    // We do a scale and bias for mapping to texel space:

    texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);

    // Move to proper place, according to the subpixel offset:

    texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;

    // Do it!

    #if SMAA_HLSL_3 == 1

    return SMAASampleLevelZero(areaTex, texcoord).ra;

    #else

    return SMAASampleLevelZero(areaTex, texcoord).rg;

    #endif

}

//-----------------------------------------------------------------------------

// Corner Detection Functions

void SMAADetectHorizontalCornerPattern(SMAATexture2D edgesTex, inout float2 weights, float2 texcoord, float2 d) {

    #if SMAA_CORNER_ROUNDING < 100 || SMAA_FORCE_CORNER_DETECTION == 1

    float4 coords = SMAAMad(float4(d.x, 0.0, d.y, 0.0),

                            SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

    float2 e;

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(0.0,  1.0)).r;

    bool left = abs(d.x) < abs(d.y);

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(0.0, -2.0)).r;

    if (left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1.0,  1.0)).r;

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(1.0, -2.0)).r;

    if (!left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    #endif

}

void SMAADetectVerticalCornerPattern(SMAATexture2D edgesTex, inout float2 weights, float2 texcoord, float2 d) {

    #if SMAA_CORNER_ROUNDING < 100 || SMAA_FORCE_CORNER_DETECTION == 1

    float4 coords = SMAAMad(float4(0.0, d.x, 0.0, d.y),

                            SMAA_PIXEL_SIZE.xyxy, texcoord.xyxy);

    float2 e;

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2( 1.0, 0.0)).g;

    bool left = abs(d.x) < abs(d.y);

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.xy, int2(-2.0, 0.0)).g;

    if (left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    e.r = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2( 1.0, 1.0)).g;

    e.g = SMAASampleLevelZeroOffset(edgesTex, coords.zw, int2(-2.0, 1.0)).g;

    if (!left) weights *= SMAASaturate(float(SMAA_CORNER_ROUNDING) / 100.0 + 1.0 - e);

    #endif

}

//-----------------------------------------------------------------------------

// Blending Weight Calculation Pixel Shader (Second Pass)

float4 SMAABlendingWeightCalculationPS(float2 texcoord,

                                       float2 pixcoord,

                                       float4 offset[3],

                                       SMAATexture2D edgesTex, 

                                       SMAATexture2D areaTex, 

                                       SMAATexture2D searchTex,

                                       int4 subsampleIndices) { // Just pass zero for SMAA 1x, see @SUBSAMPLE_INDICES.

    float4 weights = float4(0.0, 0.0, 0.0, 0.0);

    float2 e = SMAASample(edgesTex, texcoord).rg;

    SMAA_BRANCH

    if (e.g > 0.0) { // Edge at north

        #if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

        // Diagonals have both north and west edges, so searching for them in

        // one of the boundaries is enough.

        weights.rg = SMAACalculateDiagWeights(edgesTex, areaTex, texcoord, e, subsampleIndices);

        // We give priority to diagonals, so if we find a diagonal we skip 

        // horizontal/vertical processing.

        SMAA_BRANCH

        if (dot(weights.rg, float2(1.0, 1.0)) == 0.0) {

        #endif

        float2 d;

        // Find the distance to the left:

        float2 coords;

        coords.x = SMAASearchXLeft(edgesTex, searchTex, offset[0].xy, offset[2].x);

        coords.y = offset[1].y; // offset[1].y = texcoord.y - 0.25 * SMAA_PIXEL_SIZE.y (@CROSSING_OFFSET)

        d.x = coords.x;

        // Now fetch the left crossing edges, two at a time using bilinear

        // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to

        // discern what value each edge has:

        float e1 = SMAASampleLevelZero(edgesTex, coords).r;

        // Find the distance to the right:

        coords.x = SMAASearchXRight(edgesTex, searchTex, offset[0].zw, offset[2].y);

        d.y = coords.x;

        // We want the distances to be in pixel units (doing this here allow to

        // better interleave arithmetic and memory accesses):

        d = d / SMAA_PIXEL_SIZE.x - pixcoord.x;

        // SMAAArea below needs a sqrt, as the areas texture is compressed 

        // quadratically:

        float2 sqrt_d = sqrt(abs(d));

        // Fetch the right crossing edges:

        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, int2(1, 0)).r;

        // Ok, we know how this pattern looks like, now it is time for getting

        // the actual area:

        weights.rg = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.y));

        // Fix corners:

        SMAADetectHorizontalCornerPattern(edgesTex, weights.rg, texcoord, d);

        #if SMAA_MAX_SEARCH_STEPS_DIAG > 0 || SMAA_FORCE_DIAGONAL_DETECTION == 1

        } else

            e.r = 0.0; // Skip vertical processing.

        #endif

    }

    SMAA_BRANCH

    if (e.r > 0.0) { // Edge at west

        float2 d;

        // Find the distance to the top:

        float2 coords;

        coords.y = SMAASearchYUp(edgesTex, searchTex, offset[1].xy, offset[2].z);

        coords.x = offset[0].x; // offset[1].x = texcoord.x - 0.25 * SMAA_PIXEL_SIZE.x;

        d.x = coords.y;

        // Fetch the top crossing edges:

        float e1 = SMAASampleLevelZero(edgesTex, coords).g;

        // Find the distance to the bottom:

        coords.y = SMAASearchYDown(edgesTex, searchTex, offset[1].zw, offset[2].w);

        d.y = coords.y;

        // We want the distances to be in pixel units:

        d = d / SMAA_PIXEL_SIZE.y - pixcoord.y;

        // SMAAArea below needs a sqrt, as the areas texture is compressed 

        // quadratically:

        float2 sqrt_d = sqrt(abs(d));

        // Fetch the bottom crossing edges:

        float e2 = SMAASampleLevelZeroOffset(edgesTex, coords, int2(0, 1)).g;

        // Get the area for this direction:

        weights.ba = SMAAArea(areaTex, sqrt_d, e1, e2, float(subsampleIndices.x));

        // Fix corners:

        SMAADetectVerticalCornerPattern(edgesTex, weights.ba, texcoord, d);

    }

    return weights;

}

//-----------------------------------------------------------------------------

// Neighborhood Blending Pixel Shader (Third Pass)

float4 SMAANeighborhoodBlendingPS(float2 texcoord,

                                  float4 offset[2],

                                  SMAATexture2D colorTex,

                                  SMAATexture2D blendTex) {

    // Fetch the blending weights for current pixel:

    float4 a;

    a.xz = SMAASample(blendTex, texcoord).xz;

    a.y = SMAASample(blendTex, offset[1].zw).g;

    a.w = SMAASample(blendTex, offset[1].xy).a;

    // Is there any blending weight with a value greater than 0.0?

    SMAA_BRANCH

    if (dot(a, float4(1.0, 1.0, 1.0, 1.0)) < 1e-5)

        return SMAASampleLevelZero(colorTex, texcoord);

    else {

        float4 color = float4(0.0, 0.0, 0.0, 0.0);

        // Up to 4 lines can be crossing a pixel (one through each edge). We

        // favor blending by choosing the line with the maximum weight for each

        // direction:

        float2 offset;

        offset.x = a.a > a.b? a.a : -a.b; // left vs. right 

        offset.y = a.g > a.r? a.g : -a.r; // top vs. bottom

        // Then we go in the direction that has the maximum weight:

        if (abs(offset.x) > abs(offset.y)) // horizontal vs. vertical

            offset.y = 0.0;

        else

            offset.x = 0.0;

        #if SMAA_REPROJECTION == 1

        // Fetch the opposite color and lerp by hand:

        float4 C = SMAASampleLevelZero(colorTex, texcoord);

        texcoord += sign(offset) * SMAA_PIXEL_SIZE;

        float4 Cop = SMAASampleLevelZero(colorTex, texcoord);

        float s = abs(offset.x) > abs(offset.y)? abs(offset.x) : abs(offset.y);

        // Unpack the velocity values:

        C.a *= C.a;

        Cop.a *= Cop.a;

        // Lerp the colors:

        float4 Caa = SMAALerp(C, Cop, s);

        // Unpack velocity and return the resulting value:

        Caa.a = sqrt(Caa.a);

        return Caa;

        #elif SMAA_HLSL_4 == 1 || SMAA_DIRECTX9_LINEAR_BLEND == 0

        // We exploit bilinear filtering to mix current pixel with the chosen

        // neighbor:

        texcoord += offset * SMAA_PIXEL_SIZE;

        return SMAASampleLevelZero(colorTex, texcoord);

        #else

        // Fetch the opposite color and lerp by hand:

        float4 C = SMAASampleLevelZero(colorTex, texcoord);

        texcoord += sign(offset) * SMAA_PIXEL_SIZE;

        float4 Cop = SMAASampleLevelZero(colorTex, texcoord);

        float s = abs(offset.x) > abs(offset.y)? abs(offset.x) : abs(offset.y);

        return SMAALerp(C, Cop, s);

        #endif

    }

}

//-----------------------------------------------------------------------------

// Temporal Resolve Pixel Shader (Optional Pass)

float4 SMAAResolvePS(float2 texcoord,

                     SMAATexture2D colorTexCurr,

                     SMAATexture2D colorTexPrev

                     #if SMAA_REPROJECTION == 1

                     , SMAATexture2D velocityTex

                     #endif

                     ) {

    #if SMAA_REPROJECTION == 1

    // Velocity is calculated from previous to current position, so we need to

    // inverse it:

    float2 velocity = -SMAASample(velocityTex, texcoord).rg;

    // Fetch current pixel:

    float4 current = SMAASample(colorTexCurr, texcoord);

    // Reproject current coordinates and fetch previous pixel:

    float4 previous = SMAASample(colorTexPrev, texcoord + velocity);

    // Attenuate the previous pixel if the velocity is different:

    float delta = abs(current.a * current.a - previous.a * previous.a) / 5.0;

    float weight = 0.5 * SMAASaturate(1.0 - (sqrt(delta) * SMAA_REPROJECTION_WEIGHT_SCALE));

    // Blend the pixels according to the calculated weight:

    return SMAALerp(current, previous, weight);

    #else

    // Just blend the pixels:

    float4 current = SMAASample(colorTexCurr, texcoord);

    float4 previous = SMAASample(colorTexPrev, texcoord);

    return SMAALerp(current, previous, 0.5);

    #endif

}

//-----------------------------------------------------------------------------

// Separate Multisamples Pixel Shader (Optional Pass)

#if SMAA_HLSL_4 == 1 || SMAA_HLSL_4_1 == 1

void SMAASeparatePS(float4 position : SV_POSITION,

                    float2 texcoord : TEXCOORD0,

                    out float4 target0,

                    out float4 target1,

                    uniform SMAATexture2DMS2 colorTexMS) {

    int2 pos = int2(position.xy);

    target0 = SMAALoad(colorTexMS, pos, 0);

    target1 = SMAALoad(colorTexMS, pos, 1);

}

#endif

//-----------------------------------------------------------------------------

#endif // SMAA_ONLY_COMPILE_VS == 0

out vec2 texcoord;

out vec4 offset[3];

out vec4 dummy2;

void main()

{

  texcoord = gl_MultiTexCoord0.xy;

  vec4 dummy1 = vec4(0);

  SMAAEdgeDetectionVS(dummy1, dummy2, texcoord, offset);

  gl_Position = ftransform();

}

Понравилась статья? Поделить с друзьями:
  • Error c1083 cannot open include file no such file or directory
  • Error c000012f wine msi
  • Error c compiler cannot create executables centos
  • Error byte was not declared in this scope
  • Error by extcap pipe