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
-
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
-
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
-
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.
-
Содержание
- Minecraft Forums
- [Shader issue] Invalid Program error trying to run shaders with OptiFine for 1.11.2
- [Shaders] Error: Invalid program «gbuffers_ #5909
- Comments
- Description of Issue
- Steps to Reproduce
- OptiFine Version
- Installation Method
- Fabric/Forge Version
- OptiFabric Version
- Other Installed Mods
- Log Files/Crash Reports
- F3 Debug Screenshot
- Prior Testing
- Additional Information
- Minecraft Forums
- 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();
}