Talk:Refract

From Valve Developer Community
Jump to: navigation, search

Brushes

I'm pretty sure refraction on brushes wasn't possible in the original game. (It was a problem that was possible to fix as a modder; the render target wasn't being updated before the refracting brush models were rendered.) Perhaps they fixed it in the Orange Box version.

Refraction Map

Does the texture you use for refraction work in the same way as a normal map, where RGB equals XYZ?

And if so, what difference does the blue channel (Z axis) make?

--P4INKiller 01:43, 29 December 2009 (UTC)

Yes, the texture used for refraction is definitely a regular normal map. However I don't understand how refraction or normal maps work well enough to know what the blue channel would do. --Tiny Desk Engineer (Talk Page) 18:15, 24 June 2022 (PDT)
Looking at the shader source code it seems to just be a scalar from 0 to 1 for the refract amount. Grande1900 (talk) 11:38, 22 August 2023 (PDT)

Reflection

Reflection with cubemap works on this shaders, on CSS Orange box. --Anarkia777 23:22, 15 July 2010 (UTC)

decals

has anyone an idea how to properly use this shader for decals? it works but not correctly, because you can see through the material where it's on --Pfannkuchen 22:23, 1 August 2010 (UTC)

You can't. --Omnicoder 22:54, 1 August 2010 (UTC)
alright, would be nice though, if the decal wouldn't be too close to the surface... I already tried to move the decal a bit away from the surface(via code) but it didn't work --Pfannkuchen 12:08, 2 August 2010 (UTC)

Portal 2

Portal 2 seems to use new parameters (I can't get them working in P1, though i'd love to.) for the glass lights. Its basically an optical illusion to render an alpha channel in 3D and only refract the material underneath. (things like $localrefract).

Portal 2's glass light texture Refract { $model 1 $refractamount ".025" $bluramount 1 $REFRACTTINT "[.81 .89 1.0]" $scale "[1 1]" $normalmap "glass/refract_light_normal" $surfaceprop glass $localrefract 1 $localrefractdepth "0.05" $basetexture "glass/refract_light_color" $envmap "env_cubemap" hdr { $envmap "env_cubemap" } $envmapcontrast 1 $envmapsaturation .2 $envmaptint "[.2 .2 .2 ]" $normalmapalphaenvmapmask 1 $envmaplightscale .6 "<dx90" { $fallbackmaterial "glass/refract01_dx8" } }

Doh, forgot to sign it. --SpAMCAN 05:08, 29 May 2012 (PDT)

Convex Props

Whilst rendering a refract shader on a prop, any pixel of that same prop that would be seen through that material will not be rendered. Other shader types with translucency do not suffer this problem.

This is likely related to the way source handles rendering and writing to buffers. It's likely that the refract calculation is determined before writing color data from the current prop to buffer, thus causing color data BEHIND the prop to be used for refraction instead.

There is no solution to this except redesigning props to avoid this scenario, or not using Refract. Fortunately, this should be a rare scenario to come across. --DormantLemon 13:47, 10 March 2016 (UTC)

glasswindow_refract01 using missing texture for normals instead of normal map

I ported the material glass\glasswindow_refract01.vmt from Portal to Team Fortress 2, but for some reason, despite glass\glass_normal.vtf also being included in the tf\materials\glass folder, it uses the black and purple checkerboard texture for normals instead of the normal map that's set to be used by the material. --Tiny Desk Engineer (Talk Page) 18:13, 24 June 2022 (PDT)

Nevermind, apparently I managed to miss the fact that glass_normal.vtf was completely missing. --Tiny Desk Engineer (Talk Page) 06:23, 28 June 2022 (PDT)